我目前正在寻找将项目从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验证...
答案 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模型验证规则,并且不需要太多努力就可以为您提供客户端验证。