2011-02-07 12 views
6

データ注釈を使用してMVC3でクライアントの検証を実行しようとしています。私は答えのためにこのMVC3 Client side validation not workingを含む同様の記事を見ました。MVC3/Razor Client Validationが起動しない

私はEFデータモデルを使用しています。私は私の検証のためにこのような部分的なクラスを作成しました。

[MetadataType(typeof(Post_Validation))] 
public partial class Post 
{ 

} 

public class Post_Validation 
{ 
    [Required(ErrorMessage = "Title is required")] 
    [StringLength(5, ErrorMessage = "Title may not be longer than 5 characters")] 
    public string Title { get; set; } 

    [Required(ErrorMessage = "Text is required")] 
    [DataType(DataType.MultilineText)] 
    public string Text { get; set; } 

    [Required(ErrorMessage = "Publish Date is required")] 
    [DataType(DataType.DateTime)] 
    public DateTime PublishDate { get; set; } 
} 

私のcshtmlページには以下が含まれます。

<h2>Create</h2> 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Post</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Title) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Title) 
      @Html.ValidationMessageFor(model => model.Title) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Text) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Text) 
      @Html.ValidationMessageFor(model => model.Text) 
     </div> 
} 

のWeb設定:

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

レイアウト:

<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.min.js")" type="text/javascript"></script> 
ので、複数行のテキスト注釈作品やテキスト領域を作成します。しかし、検証のどれもクライアント側では機能しません。私は何が欠けているかも知れない。何か案は??私は必要に応じてさらに情報を投稿することができます。ありがとう!私はそれが必要に応じて変更することが見つけられませんでしたあなたは

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

を検証しているビューに以下を追加し

public class Post_Validation 
{ 
    [Required(ErrorMessage = "Title is required")] 
    [StringLength(5, ErrorMessage = "Title may not be longer than 5 characters")] 
    public object Title { get; set; } 

    [Required(ErrorMessage = "Text is required")] 
    [DataType(DataType.MultilineText)] 
    public object Text { get; set; } 

    [Required(ErrorMessage = "Publish Date is required")] 
    [DataType(DataType.DateTime)] 
    public object PublishDate { get; set; } 
} 
+0

こんにちは、これはもうアクティブではないかもしれませんが、私はちょうどこれを解決する方法を尋ねたいと思いますか?私はまったく同じ問題に直面していますが、私はテキストフィールドの検証を得ることはできません。ありがとう... – shennyL

答えて

4

1) してみてください。

+2

これはうまくいきますが、私の問題は、root \ web.configではなくViews \ web.configにappsettingsがあることです。私は彼らがどのように混在しているのか分からない、デフォルトのプロジェクトはそれらをルート設定に入れているが、それはループのために私を投げた。 –

-4

は公共オブジェクトを使用して宣言するようにしてくださいWeb.configので削除することがあります。

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

幸運!また、クライアント側の検証がトリガーされているかどうかを知るために、既知の不良値を入れてみてください。必要な注釈は空白の入力に対してメッセージを表示するのに十分ではないようです。

2.) 以下のスクリプトをあなたのビューに入れればうまくいくはずです。

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 
関連する問題