我有一个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;}
}
我遇到的问题是,即使在我的第一个表单提交之前,只要页面加载,这种不引人注目的验证就会启动。由于最小长度验证,一旦我开始键入,Name的文本框就会变为红色。我已成功使用不显眼的验证,并且在同一网站的其他页面上没有此问题。由于我的控制器中的代码从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>
答案 0 :(得分:4)
您描述的是默认行为!默认情况下,字段也会在onKeyUp上进行验证。对于必填字段,这种情况不会发生,因为当密钥启动时,文本框不再为空!所以也许你对所需的现场案例的行为感到困惑。 无论如何,您可以禁用keyUp验证。请在此处查看您可以更改的插件的完整选项:http://docs.jquery.com/Plugins/Validation/validate#toptions
答案 1 :(得分: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>