Tengo un problema con la validación en ASP.NET MVC 2.0. Uso la misma acción en el controlador para realizar la solicitud del usuario.
Por ejemplo:Los mensajes de validación se muestran cuando carga la página
public ActionResult Index(ReportModel model)
{
if (!model.IsInitialDisplay && ModelState.IsValid)
{
model.Result = service.GetResult(model);
}
return View(model);
}
En el ReportModel, que definen un IsInitialDisplay indicador para determinar si la página se visualiza o no inicial:
public class ReportModel
{
[Required(ErrorMessage = "*")]
public string Criteria { get; set; }
public bool IsInitialDisplay { get; set; }
public ReportResult Result { get; set; }
public ReportModel()
{
IsInitialDisplay = true;
}
}
Y en la vista, yo uso el siguiente código:
<% using (Html.BeginForm())
{ %>
<table>
<tr>
<th>
Criteria:
</th>
<td>
<%= Html.TextBox("Criteria", "") %>
<%= Html.ValidationMessage("Criteria") %>
</td>
</tr>
</table>
<br />
<input type="submit" value="Submit" />
<%= Html.Hidden("IsInitialDisplay", false) %>
<% } %>
como espero, si los usuarios no introduce ningún valor para los Criterios y haga clic en botón Enviar, el mensaje de error para la validación será di extendido.
Pero el mensaje de error de validación siempre se muestra en la carga de la página inicial, no sé cómo prevenirlo?
¿Alguien sabe? Gracias,
[Actualizado]
He actualizado mi método de acción que a continuación y Es parecen estar bien:
public ActionResult Index(ReportModel model)
{
// Collecting some commons data here...
if (model.IsInitialDisplay)
{
ModelState.Clear();
}
else if (ModelState.IsValid)
{
model.Result = service.GetResult(model);
}
return View(model);
}
En mi proyecto, uso el objeto de modelo complejo para _ReportModel.Criteria_. Entonces, tu sugerencia no es adecuada. – aquanilium