MVC1/XVALプロジェクトをMVC2にアップグレードし、クライアントサイド検証との互換性
質問
私は現在、MVC1からMVC2にプロジェクトを移行するためにここで検討しています。クライアント側の検証にXVALを使用しています。
私が理解していることから、私はXVALへの参照を削除し、MVC2 EnableClientsideSideValidationに置き換えるだけで、それはトリックを行う必要があります。他に何かが必要ですか?
また、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);
}
モデル1:
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)%>
これは、MVC2クライアントサイドの検証がフィールドIDで検証されているため失敗しているPOCです...
解決
そこに行って、それをして、Tシャツを手に入れました。そして、私がそこに行ったことがないことを望みます - MVC2の検証は、XVALが適切に実装されたら、率直に言ってXVALと同等ではありません。さらに、MVC3の検証ははるかに優れています。ですから、もし私がXvalから飛び降りているなら、私はそれをそれをかなり異なる獣であるMVC3で動作させることに向けてベクターになります。
他のヒント
私はここでワイアットが特にMVC3の部分について言ったことに多少購読していますが、MVC2クライアントサイドの検証を使用していますが、それはまったく悪い経験ではありませんでした。
質問に答えるには、次のことを行う必要があります。1。Microsoftajax.jsとMicrosoftmvcValidation.jsをご覧ください。 2.次に、ヘルパー<%html.EnableClientValidation()を呼び出すだけです。 %>
Data Annotationモデルの検証ルールをピックアップし、多くの労力をかけずにクライアント側の検証を提供する必要があります。