ASP.Net MVC - Ação pós-expressão lambda auxiliar
Pergunta
Eu criei este método auxiliar usando uma expressão lambda para usar um auxiliar de tipo forte em uma visualização
Ajudante
public static string DateFor<TModel, TDate>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TDate>> expression)
{
ModelMetadata data = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
StringBuilder sb = new StringBuilder();
...
//code that creates three dropdownlist (day, month and year)
...
}
visualizar
<%= Html.LabelFor(model => model.DataNascita) %>
Controlador
[HttpPost]
public ActionResult Edit(int id, Account MyAccount)
{
...
return View(...);
}
meu problema é que MyAccount.DataNascita não está definido com o valor que escolhi no formulário Editar (valor mínimo da data..ex.1900/01/01).
como vinculá-lo em uma ação Editar postagem?
Solução
Acho que o que você procura é um ModelBinder personalizado que analisará os dados postados recebidos e os converterá em um DateTime para o seu modelo.
Outras dicas
Na sua opinião, você diz que está produzindo um Rótulo para alguma coisa, mas sua pergunta é por que o valor não é mantido postagem.
Eu acho que você precisa, pelo menos, dizer Html.EditorFor(...)
, mas você provavelmente deseja usar o método auxiliar que escreveu:
<%: Html.DateFor(model => model.DataNascita) %>
No entanto, é impossível dizer exatamente o que está acontecendo aqui sem conhecer o tipo de dados do DataNascita
propriedade no modelo.
Eu sugiro que você use Selecionador de data Jquery.
Você pode personalizá-lo com Jquery Themeroller.