Usuário com melhor resposta
MVC - DataType

Pergunta
-
Pessoal,
Tenho uma aplicação web onde utilizo MVC 2, com o seguinte código:
//Modelo public class TesteModels { [Required] [DataType(DataType.Text)] public string Usuario { get; set; } [Required] [DataType(DataType.Password)] public string Senha { get; set; } [Required] [DataType(DataType.MultilineText)] public string Obs{ get; set; } } //Controle public class TipoController : Controller { // GET: /Tipo/ public ActionResult Index() { return View(); } public ActionResult Teste() { return View(); } [HttpPost] public ActionResult Teste(TesteModels modelo) { if (ModelState.IsValid) { return RedirectToAction("Index", "Home"); } return View(modelo); } }
//View <% using (Html.BeginForm()) {%> <%: Html.ValidationSummary(true) %> <fieldset> <legend>Fields</legend> <div class="editor-label"> <%: Html.LabelFor(m => m.Usuario) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Usuario) %> <%: Html.ValidationMessageFor(m => m.Usuario) %> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Senha) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Senha) %> <%: Html.ValidationMessageFor(m => m.Senha) %> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Obs) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Obs) %> <%: Html.ValidationMessageFor(m => m.Obs) %> </div> <p> <input type="submit" value="Create" /> </p> </fieldset> <% } %>
Mas quando carrego a pagina, os campos usuário, Senha e OBS não estão de acordo com o DataType configurado, todos estão como texto, mas o campo Senha deveria estar como password, e o Obs como multiline.
O que devo fazer para que o campos fiquem de acordo com o DataType informado ?
Abs,
- Movido AndreAlvesLima quarta-feira, 23 de fevereiro de 2011 17:19 (De:.NET Development - Geral)
Respostas
-
Oi Daylon,
Somente complementando a corretíssima resposta do Paulo, além de <%: Html.EditorForModel() %>, que monta todo o formulário para o seu Model, caso você use <%: Html.EditorFor() %> também ocorreria o que você deseja. O código da sua View ficaria assim (alterações em negrito):
//View <% using (Html.BeginForm()) {%> <%: Html.ValidationSummary(true) %> <fieldset> <legend>Fields</legend> <div class="editor-label"> <%: Html.LabelFor(m => m.Usuario) %> </div> <div class="editor-field"> <%: Html.EditorFor(m => m.Usuario) %> <%: Html.ValidationMessageFor(m => m.Usuario) %> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Senha) %> </div> <div class="editor-field"> <%: Html.EditorFor(m => m.Senha) %> <%: Html.ValidationMessageFor(m => m.Senha) %> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Obs) %> </div> <div class="editor-field"> <%: Html.EditorFor(m => m.Obs) %> <%: Html.ValidationMessageFor(m => m.Obs) %> </div> <p> <input type="submit" value="Create" /> </p> </fieldset> <% } %>
Forte abraço,
André Borges Medeiros
MCT, MCPD, MCTS
Procurando treinamento de ASP.NET MVC?
>> Se a resposta solucionar sua dúvida, favor Votar como Útil- Sugerido como Resposta Paulo Castilho quinta-feira, 24 de fevereiro de 2011 14:47
- Marcado como Resposta André Borges MedeirosModerator sexta-feira, 25 de março de 2011 12:58
-
Olá, Daylon.
O DataType das propriedades são usados somente quando você utiliza o método: <%: Html.EditorForModel() %> em uma View tipada para o modelo.
No seu caso, apesar de você ter definido o DataType, você não está utilizando o recurso, pois você definiu o seu próprio layout para o modelo.
Abraços,
Paulo Castilho - www.paulocastilho.com.br- Sugerido como Resposta André Borges MedeirosModerator quinta-feira, 24 de fevereiro de 2011 14:05
- Marcado como Resposta André Borges MedeirosModerator sexta-feira, 25 de março de 2011 12:58
Todas as Respostas
-
Olá!
Por favor poste sua duvida no forum de ASP.NET MVC em http://social.msdn.microsoft.com/Forums/pt-BR/mvcpt/threads
Até lá!
HJ -
Prezado(a),
Estou migrando seu post para o fórum de ASP.NET MVC.
Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá.
Obrigado pelo apoio.
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
Olá, Daylon.
O DataType das propriedades são usados somente quando você utiliza o método: <%: Html.EditorForModel() %> em uma View tipada para o modelo.
No seu caso, apesar de você ter definido o DataType, você não está utilizando o recurso, pois você definiu o seu próprio layout para o modelo.
Abraços,
Paulo Castilho - www.paulocastilho.com.br- Sugerido como Resposta André Borges MedeirosModerator quinta-feira, 24 de fevereiro de 2011 14:05
- Marcado como Resposta André Borges MedeirosModerator sexta-feira, 25 de março de 2011 12:58
-
Oi Daylon,
Somente complementando a corretíssima resposta do Paulo, além de <%: Html.EditorForModel() %>, que monta todo o formulário para o seu Model, caso você use <%: Html.EditorFor() %> também ocorreria o que você deseja. O código da sua View ficaria assim (alterações em negrito):
//View <% using (Html.BeginForm()) {%> <%: Html.ValidationSummary(true) %> <fieldset> <legend>Fields</legend> <div class="editor-label"> <%: Html.LabelFor(m => m.Usuario) %> </div> <div class="editor-field"> <%: Html.EditorFor(m => m.Usuario) %> <%: Html.ValidationMessageFor(m => m.Usuario) %> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Senha) %> </div> <div class="editor-field"> <%: Html.EditorFor(m => m.Senha) %> <%: Html.ValidationMessageFor(m => m.Senha) %> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Obs) %> </div> <div class="editor-field"> <%: Html.EditorFor(m => m.Obs) %> <%: Html.ValidationMessageFor(m => m.Obs) %> </div> <p> <input type="submit" value="Create" /> </p> </fieldset> <% } %>
Forte abraço,
André Borges Medeiros
MCT, MCPD, MCTS
Procurando treinamento de ASP.NET MVC?
>> Se a resposta solucionar sua dúvida, favor Votar como Útil- Sugerido como Resposta Paulo Castilho quinta-feira, 24 de fevereiro de 2011 14:47
- Marcado como Resposta André Borges MedeirosModerator sexta-feira, 25 de março de 2011 12:58