2014-03-04 41 views
1

當我單擊提交時,我發現驗證失敗。有很多紅色標籤錯誤。但是,該頁仍然是POST。我怎樣才能使這件事失敗客戶端?客戶端驗證仍然會導致Chrome中的POST

注意。此問題僅在Chrome v33.0中發生。 IE v10和FF v26.0不這樣做。Cookies are enabled for chrome。此外,運行Visual Studio調試器時不會發生此問題。調試器被配置爲使用本地IIS服務器。它只發生在開發服務器上。

<appSettings> 
    <add key="webpages:Version" value="1.0.0.0" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

我的形式看起來像:

我在web.config配置客戶端驗證

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
    //fields.... 
    <p> 
     <input type="submit" value="Create" /> 
    </p> 
} 

而且我引用應該是完整的:

<script src="@Url.Content("~/Scripts/jquery-ui-1.10.4.custom.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/DataTables-1.9.4/media/js/jquery.dataTables.min.js")" type="text/javascript"></script>  
<link rel="stylesheet" href="@Url.Content("~/Content/Themes/start/jquery-ui-1.10.4.custom.css")" /> 
    <link rel="stylesheet" href="@Url.Content("~/Content/Site.css")" /> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 

<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> 
<script src="@Url.Content("~/Scripts/customItemRequestValidation.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/conditional-validation.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/CatalogScript.js")" type="text/javascript"></script> 
+0

in firebug,enable ** persist **並嘗試表單提交,看看你是否得到任何其他的JavaScript錯誤。 – Shyju

+0

@Shyju - 好的,在嘗試你的建議時,我需要更新問題。這個問題只發生在CHROME中。 IE和FF沒有這樣做。 –

回答

0

問題與Windows 7和Server 2008相關。當我將主機更改爲Windows 8(並且我懷疑服務器2012)時問題沒有了。過去,與MVC有關的IIS版本遇到過類似的問題。我知道MVC修改IIS。所以,我在這裏猜測,存在與IIS版本相關的錯誤以及MVC如何與IIS一起工作導致該問題。

要解決它,我可以:

  1. 更改主機IIS 8(Windows 8中)
  2. 單靠服務器端驗證在這種情況下。
+0

做服務器端驗證不應該被認爲是解決這個問題的一種方法。即使客戶端驗證正在工作,服務器端驗證也應該始終完成。您只需檢查ModelState.IsValid,它將運行與客戶端相同的檢查。 –

+0

我同意你的意見。不管服務器端驗證都應該完成。我只希望客戶端驗證是可能的。 –