2010-12-19 37 views
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> 

サーバ側検証は正常に動作し、検証エラーメッセージは期待どおりに表示されます。しかし、私はクライアント側の検証が機能するようにはなっていません。クライアント側の検証を行うために欠けていることが明らかになっていますか?

答えて

1

web.configファイルでクライアント側の検証を有効にしましたか?

あなたは私があなたにお勧めのAppSettingセクション

<configuration> 
    <appSettings> 
     <add key="ClientValidationEnabled" value="true"/> 
     <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 
</configuration> 

か、純粋なC#のコードに

HtmlHelper.ClientValidationEnabled = true; 
HtmlHelper.UnobtrusiveJavaScriptEnabled = true; 

を使用してそれを行うことができます内部のフラグのカップルを追加web.configファイルに直接それを行うことができますBrad Wilsonの記事を読むUnobtrusive Client Validation in ASP.NET MVC 3

+0

素早くお返事ありがとうございます。そして、私はちょうどBradの記事を読んで、リンクのおかげで。彼は私が持っていた正確な問題を説明しました。 上記のMSスクリプトを削除し、代わりにjquery.validate.jsとjquery.validate.unobtrusive.jsを含めると、クライアント側の検証は正常に機能します。 MVC3のために、MS特有のものがJSON実装への道を与えているようです。 MSが自分自身でリンゴ全体を食べようとするのではなく、この方向に向かっているのを見てうれしいです。 –

+0

ようこそ。うれしかったよ! – Lorenzo

関連する問題