2011-02-07 51 views
6

我正在嘗試使用數據註釋獲取在MVC3中工作的客戶端驗證。我看過類似的帖子,包括這個MVC3 Client side validation not working的答案。MVC3/Razor客戶端驗證沒有觸發

我正在使用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> 

所以,多行文字註釋的作品,並創建一個文本區域。但驗證沒有一項適用於客戶端。我不知道我可能會錯過什麼。有任何想法嗎??如果需要,我可以發佈更多信息。謝謝!

+0

嗨,這可能不再活躍,但我只想問你如何解決這個問題?我在這裏面對完全相同的問題,但我不能得到驗證文本字段..任何想法??謝謝... – shennyL 2011-10-16 05:20:11

回答

4

1) 嘗試添加下列到視圖它要驗證

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

我沒有發現有必要修改Web.config,所以你可以刪除

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

祝你好運!另外,嘗試輸入已知的錯誤值以查看是否觸發了客戶端驗證,所需的註釋似乎不足以顯示空白輸入的消息。

2.) 把下面的腳本放到你的視圖中,它應該可以工作。

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 
+2

這是行不通的,但我的問題是,我有Views \ web.config中的appsettings,而不是root \ web.config。我不確定它們是如何混淆的,因爲默認項目將它們放在根配置中,但它讓我陷入循環。 – 2011-02-19 04:41:55

-4

試圖聲明使用公共對象

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; } 
} 
相關問題