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); 
    } 

型號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 ...

+0

您對除去xVal參考資料是正確的。我想這應該是。我不確定你的第二種情況。 – Pradeep 2011-01-10 16:17:41

+0

MVC3現在出來:)。 – 2011-01-13 19:14:47

回答

0

在那裏,這樣做,拿到了T恤。並希望我永遠不會去那裏 - 一旦你有xVal正確實施,MVC2驗證是坦率地不與xVal齊名。另外,MVC3驗證要好得多,要好得多。所以,如果我跳過xVal,我會向着與MVC3一起工作,這是一個非常不同的野獸。

+0

因爲知道MVC3是唯一的RC,所以我們不需要選擇穩定的開發工具。你也許可以指點我有用的資源,儘可能無痛苦地從MVC1過渡到MVC2到MVC3? – Erick 2011-01-10 18:45:47

0

儘管我對Wyatt在這裏所說的內容有所瞭解,特別是關於MVC3的部分,但我一直在使用MVC2客戶端驗證,並且它一直都不是很糟糕的體驗。

要回答您的問題,您需要執行以下操作: 1.在您的視圖中包含MicrosoftAjax.js和MicrosoftMvcValidation.js。 2.然後只需調用幫助程序<%Html.EnableClientValidation(); %>

它應該提取您的DataAnnotation模型驗證規則,併爲您提供客戶端驗證,而不需要太多努力。