客户端验证仍会导致Chrome中的POST

时间:2014-03-04 21:42:33

标签: asp.net-mvc asp.net-mvc-3 google-chrome

当我点击提交时,我看到验证失败。有很多红色标签错误。但是,页面仍然是POST。我怎么能让这个东西失败的客户端?

注意。此问题仅发生在Chrome v33.0中。 IE v10和FF v26.0不这样做。 Cookies are enabled for chrome。此外,运行Visual Studio调试器时不会发生此问题。调试器配置为使用本地IIS服务器。它只发生在开发服务器上。

我在web.config中配置了客户端验证:

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

我的表单如下:

@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>

1 个答案:

答案 0 :(得分:0)

该问题与Windows 7和Server 2008有关。当我将主机更改为Windows 8(我怀疑服务器2012)时,问题就消失了。我在过去遇到过与IIS版本相关的MVC问题。我知道MVC会修改IIS。所以,我猜这里有一个与IIS版本相关的错误以及MVC如何与IIS一起工作导致问题。

为了解决这个问题,我可以:

  1. 将主机更改为IIS 8(Windows 8)
  2. 在这种情况下仅依靠服务器端验证。