5
我定義一個變量作爲ASP.MVC3 ModelState.IsValid不包括RemoteAttribute檢查
public class EditModel
{
[Remote("IsNameAvailable", "Home", ErrorMessage = "Name is in use.")]
[Display(Name = "Name")]
public string Name{ get; set; }
}
,並在家庭控制器
public JsonResult IsNameAvailable(string name)
{
if (duplicate)
return Json(false, JsonRequestBehavior.AllowGet);
else
return Json(true, JsonRequestBehavior.AllowGet);
}
,但是當我檢查ModelState.IsValid中的保存動作,即使我可以看到顯示在視圖上的錯誤消息,它總是返回true。
public ActionResult Save(EditModel editModel)
{
if (!ModelState.IsValid)
{
//Return to view and display error in view
return View("Home", editModel);
}
//Input data is valid and save record
Repository.Save(editModel.Name);
}
[問題]
如何能在ModelState中檢查也是一個模型由RemoteAttribure的驗證規則?
謝謝你的建議!這種情況是,我有很多這樣的模型,我想找到減少代碼的最佳選擇。需要編碼的第一個和第二個選項取決於使用遠程屬性的模型編號。你能解釋更多最後的選擇嗎? – daniel 2012-02-01 02:37:32
RemoteAttribute的IsValid方法實際上被稱爲serverside。如果您使用.NET反編譯器查看此方法,您會看到所有此方法所做的都是「返回true」。創建自己的屬性,該屬性派生自RemoteAttribute,並在該IsValid()方法中放置一些實際的驗證邏輯。例如,你可以在你自己的屬性上創建一個額外的屬性,比如ValidationMethod。使用該屬性時,可以傳遞應該執行驗證的方法。在您的IsValid()方法中,您可以調用該驗證方法。 – 2012-02-06 10:57:43