弱类型视图中的ASP.NET MVC验证

时间:2010-06-08 10:09:45

标签: c# asp.net-mvc visual-studio validation

我在验证非强类型视图的数据时遇到问题。我正在更新该视图中3个不同模型的数据,并且我有验证方法,但我不知道如何显示验证消息。

我应该在哪里放置验证消息(对于强类型视图,我将它们放在ModelState中,我认为在这种情况下没有意义),我应该如何显示它们(我怀疑我将能够使用“validationmessagefor” “,也许是”validationmessage“某种方式)?

1 个答案:

答案 0 :(得分:2)

使用Asp.net MVC验证在强类型中很容易,但是如果你的视图不是强类型的,你仍然可以轻松地进行。 假设您在控制器中有以下操作。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string userEmail, string password)
{
    if (ValidateLogin(userEmail, password))
    {
                //redirect
    }
    return View();
}

,您的验证方法如下,

private bool ValidateLogin(string userEmail, string password)
{
    if (String.IsNullOrEmpty(userEmail))
    {
        ModelState.AddModelError("username", "You must specify a username.");
    }


    if (password == null || password.Length == 0)
    {
        ModelState.AddModelError("password",
               String.Format(CultureInfo.CurrentCulture,
               "You must specify a password."));
    }

    return ModelState.IsValid;
 }

现在在您的视图中,在视图文件夹中的 login.aspx ,您可以通过这种方式显示验证。

<label for="useremail">User Email:</label>
<%= Html.TextBox("useremail") %>
<%= Html.ValidationMessage("useremail")%>

除此之外,您还可以使用以下帮助程序方法显示验证摘要或显示通用方法。

<%= Html.ValidationSummary(true, "Please correct the errors.") %>