0

現在、MVC1からMVC2にプロジェクトを移行するためにここを探しています。クライアント側の検証にxValを使用しています。MVC1/xValプロジェクトをMVC2にアップグレードし、クライアント側の検証との互換性を確認します

私が理解するところでは、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" /> 

    <% } %> 

VIEW2:

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

これは、それがフィールドIDによって検証するのでMVC2クライアント側の検証が失敗したPOCです...

+0

xValの参照を削除するのは適切です。私はそれがそうでなければならないと思う。あなたの2番目のシナリオについてはわかりません。 – Pradeep

+0

MVC3は今外です:)。 –

答えて

0

がありまし、それを行っては、Tシャツを得ました。 MVC2の検証は、xValが正しく実装されていれば、真にxValと同等ではありません。さらに、MVC3の検証ははるかに優れています。だから、もし私がxValから飛び降りていたら、私はそれをMVC3とは大きく異なる獣で動作させる方向に向かいます。

+0

MVC3がRCだけであることを知っているのは残念なことに、私たちのためのオプションではありません。 MVC1からMVC2への移行を可能な限り無駄にするために役立つリソースを教えてもらえますか? – Erick

+0

私は、MVCスタックの最初の2つのリビジョンの間違いでした。それがRC段階にあれば、それはおそらくあなたが築くべきものです。 –

+0

問題をより明確に含めるように質問を編集しました – Erick

0

ワイアットはここで特にMVC3について言いましたが、私はMVC2クライアント側のバリデーションを使用していますが、それはまったく悪い経験ではありません。

質問に答えるには、次の操作を行う必要があります。 1. MicrosoftAjax.jsとMicrosoftMvcValidation.jsをビューに含めます。 2.次に、単にヘルパーをコールします。<%Html.EnableClientValidation(); %>

DataAnnotationモデルの検証ルールを取得して、クライアント側の検証を大幅に行う必要があります。

+0

問題を明確にするために私の質問を編集しました...クライアント側の検証では各フィールドを検証しません – Erick

関連する問題