2

我有一个 HTML 表单,它在我的网站中使用不显眼的验证,它是一个 ASP.Net MVC4 应用程序。我认为表格很简单,如下所示

@Using (Html.BeginForm())
{
  @: Listing for @ViewBag.itemNumber
  @Html.TextBoxFor(model=>model.Name)
  @Html.TextBoxFor(model=>model.Location)
  @:<input type="submit" value="Save" />
}

我的控制器如下图

public ActionResult test()
{
  string itemNumber = Request.params["item"];
  ViewBag.itemNumber = itemNumber;
  return View();
}

我的模型是

public class item
{
 [StringLength(10, ErrorMessage = "The Name should be atleast 3 characters in length", MinimumLength = 3)]
 public string Name {get;set;}
 public string Location {get;set;}
}

我遇到的问题是,即使在我的第一个表单提交之前,页面加载时就会启动不显眼的验证。由于最小长度验证,我一开始输入,名称的文本框就会变成红色。我已经成功地使用了不显眼的验证,并且在同一网站的其他页面上没有这个问题。我怀疑验证在这个特定页面的早期就开始了,因为我的控制器中的代码从 URL GET 参数中检索一个值并将其设置在 Viewbag 中。我的假设正确吗?如果是,如何防止验证在此页面上过早开始?

编辑:我的页面上有以下 javascript 库,其顺序与下面指定的相同

<script src="~/Scripts/jquery-1.8.2.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery-ui-1.9.0.min.js" type="text/javascript"></script>
<script src="~/Scripts/jQuery.tmpl.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
4

2 回答 2

4

您描述的是默认行为!默认情况下,还验证字段 onKeyUp。必填字段不会发生这种情况,因为当键向上时,文本框不再为空!因此,您可能对所需字段案例的行为感到困惑。无论如何,您可以禁用 keyUp 验证。在此处查看您可以更改的插件的完整选项:http: //docs.jquery.com/Plugins/Validation/validate#toptions

于 2012-10-26T00:55:50.930 回答
0

您能否向我们展示您呈现的 HTML 页面(即查看源代码)?

我有兴趣查看您正在使用哪些 .js 包。

也许您正在使用旧的/越野车jquery-1....js包。我刚刚使用 jquery-1.6.2.js 版本(仅供参考:最新版本是 1.8.2)测试了您的示例代码,并且不显眼的 js 按预期工作。

您的问题的症状听起来肯定像是客户端问题 (JavaScript),因此能够看到您呈现的网页可能会帮助我们帮助您。

顺便一提; 你的代码示例仍然有错别字。您的View代码应如下所示:

@using(Html.BeginForm())
{
  @ViewBag.itemNumber
  @Html.TextBoxFor(model=>model.Name)
  @Html.TextBoxFor(model=>model.Location)
  <input type="submit" value="Save" />
}

更新 我根据您发布的内容创建了一个 MVC 4 应用程序。这是呈现的 HTML。

注意我包含的 JavaScript 包。您的问题很可能是由于缺少 js 包造成的。

   <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width" />
        <title>test</title>
        <link href="/Content/site.css" rel="stylesheet" type="text/css" />
        <script src="/Scripts/jquery-1.6.2.js" type="text/javascript"></script>
        <script src="/Scripts/jquery.validate.js" type="text/javascript"></script>
        <script src="/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
    </head>
    <body>


    <h2>test</h2>
    <form action="/" method="post">
<input data-val="true" data-val-length="The Name should be at least 3 characters in length" data-val-length-max="10" data-val-length-min="3" id="Name" name="Name" type="text" value="" />
<input id="Location" name="Location" type="text" value="" />  
<input type="submit" value="Save" />
    </form>
    </body>
    </html>
于 2012-10-25T16:24:41.133 回答