将MVC1 / xVal项目升级到MVC2以及与客户端验证的兼容性

时间:2011-01-10 14:26:24

标签: asp.net-mvc model-view-controller asp.net-mvc-2 xval client-side-validation

我目前正在寻找将项目从MVC1迁移到MVC2。我们正在使用xVal进行客户端验证。

根据我的理解,我只需删除对xVal的引用并替换为MVC2 EnableClientSideValidation,它应该可以解决问题。还需要其他什么吗?

另外,由于xVal无法在客户端验证模型列表,MVC2 + ClientSideValidation仍然如此? (我对“模型列表”的意思是在List<TypeOfModel>

上进行验证

这样的例子是: 控制器:

    public ActionResult Index()
    {
        Models.Model1 model = new Models.Model1();
        model.Usernames = new List<Models.Model2>();

        model.Usernames.Add(new Models.Model2 {  });
        model.Usernames.Add(new Models.Model2 {  });
        model.Usernames.Add(new Models.Model2 {  });
        model.Usernames.Add(new Models.Model2 {  });

        return View(model);
    }

Model1:

class Model1 {  
public List<Model2> Usernames { get; set; }
}

模型2:

class Model2 {  
[Required]
public string Username { get; set; }
}

查看:

    <% Html.EnableClientValidation(); %>

    <% using (Html.BeginForm()) { %> 

        <% foreach (var username in Model.Usernames) { %> 
            <% Html.RenderPartial("View2", username); %>
            <br /><br />
        <% } %>

        <input type="submit" />

    <% } %>

视图2:

<%= Html.EditorFor(f => f.Username) %>
<%= Html.ValidationMessageFor(a => a.Username)%>

这是一个POC,其中MVC2客户端验证失败,因为它通过字段ID验证...

2 个答案:

答案 0 :(得分:0)

去过那里,做到了,得到了T恤。并且希望我从未去过那里 - 一旦你正确实施了xVal,MVC2验证就不会与xVal相提并论。此外,MVC3验证要好得多。所以,如果我跳过xVal,我会转向使它与MVC3一起使用,这是一个非常不同的野兽。

答案 1 :(得分:0)

虽然我稍微赞同Wyatt在这里所说的内容,特别是有关MVC3的部分,但我一直在使用MVC2客户端验证,并且它的体验并不是很糟糕。

要回答您的问题,您需要执行以下操作: 1.在视图中包含MicrosoftAjax.js和MicrosoftMvcValidation.js。 2.然后简单地调用助手&lt;%Html.EnableClientValidation(); %GT;

它应该拾取您的DataAnnotation模型验证规则,并且不需要太多努力就可以为您提供客户端验证。