0
我試圖得到什麼,我認爲是使用一個模型DataAnnotations來驅動客戶端驗證,以及一個簡單的例子。DataAnnotations駕駛客戶端驗證問題
這裏是我的模型......
public class Person
{
[Required(ErrorMessage = "First Name Required")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last Name Required")]
public string LastName { get; set; }
}
這裏是我的控制器......
public class FriendsController : Controller
{
public ActionResult Create()
{
Person newFriend = new Person();
return View(newFriend);
}
[HttpPost]
public ActionResult Create(Person friendToCreate)
{
if (ModelState.IsValid)
{
// todo -- do something here
return Redirect("/");
}
// Invalid - redisplay form with errors
return View(friendToCreate);
}
}
,這裏是我的觀點...
@model MvcApplication4.Models.Person
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
</head>
<body>
<h2>
Create</h2>
@{Html.EnableClientValidation();}
@using (Html.BeginForm())
{
<fieldset>
<p>
@Html.LabelFor(m => m.FirstName)
@Html.TextBoxFor(m => m.FirstName)
@Html.ValidationMessageFor(m => m.FirstName)
</p>
<p>
@Html.LabelFor(m => m.LastName)
@Html.TextBoxFor(m => m.LastName)
@Html.ValidationMessageFor(m => m.LastName)
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
</body>
</html>
服務器端驗證工作正常,驗證錯誤消息按預期顯示。但是,我沒有得到客戶端驗證的工作。有什麼顯而易見的,我失蹤,使客戶端驗證出現?
感謝您的快速回答。我剛剛閱讀了布拉德的文章,感謝您的鏈接。他描述了我遇到的確切問題。 原來,如果我從上面刪除了MS腳本,而是包含了jquery.validate.js和jquery.validate.unobtrusive.js,那麼客戶端驗證工作得很好!對於MVC3來說,MS特定的東西似乎讓位於JSON實現。很高興看到MS正在朝這個方向發展,而不是嘗試自己吃掉整個蘋果。 – 2010-12-20 00:16:26
不客氣。很高興幫助! – Lorenzo 2010-12-20 00:17:37