簡體   English   中英

MVC3客戶端驗證不起作用

[英]MVC3 Client side validation not working

我正在使用帶Razor的MVC3。
我在_Layout.cshtml中包含以下內容:

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>  

我的表格如下:

  @{
       ViewBag.Title = "Register"; 
       Html.EnableClientValidation();
   }  
   @using (Html.BeginForm("Register"))
   {
      <fieldset>
        <p>
            @Html.LabelFor(o => o.Email)
            @Html.TextBoxFor(o => o.Email)
            @Html.ValidationMessageFor(o => o.Email)
        </p>
  ...
 </fieldset>
}

我的ViewModel具有DataAnnotations(並實現IValidatableObject),並在控制器操作期間進行驗證。 但是,如果不發布表單,我似乎無法在客戶端使用JS驗證。

我錯過了什么?

在ASP.NET MVC 3中,jquery驗證插件是執行客戶端驗證的默認設置。 因此,您可以從項目中刪除所有Microsoft*.js腳本。 您只需要以下內容:

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

並刪除Html.EnableClientValidation(); 呼叫。 在web.config中啟用了客戶端驗證:

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

刪除Html.EnableClientValidation(); 並轉到您的網絡配置,並確保您有一個如下所示的appSetting:

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

嘗試在視圖中添加以下行。

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

包括jquery-1.4.4.js,jquery.validate.js,jquery.validate.unobtrusive.js

我得到它為我的應用程序工作,但它似乎沒有開始,直到我輸入一個壞的值。 例如

[Required(ErrorMessageResourceType = typeof(Resources.WValidation), ErrorMessageResourceName = "TestCountRequired")]
        [Range(1, Int32.MaxValue, ErrorMessageResourceType = typeof(Resources.WValidation), ErrorMessageResourceName = "TestCountRange")]
        public int? TestCountThreshold { get; set; }

然后我在前端輸入0,之后客戶端驗證工作完美無瑕。 我想驗證是否適用於初始空白文本框...驗證似乎不正確,等待嘗試的錯誤值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM