【发布时间】:2012-11-05 21:12:33
【问题描述】:
我只是第一次尝试使这项工作: http://msdn.microsoft.com/en-us/library/gg508808%28v=vs.98%29.aspx
在我的模型中我有
[Remote("RequireName", "Contact")]
[Editable(true)]
public string Name { get; set; }
在我的控制器中
public JsonResult RequireName(string Name)
{
bool resultbool = ((Name != null) && (Name.Length > 0));
return this.Json(resultbool ? "OK." : "Not OK.", JsonRequestBehavior.AllowGet);
}
(我现在不关心它的结果消息。)
在生成的 HTML 中,我有:
<input type="text" value="" name="Name" id="Name" data-val-remote-url="/[mysite]/Contact/RequireName" data-val-remote-additionalfields="*.Name" data-val-remote="'Name' is invalid." data-val="true" class="text-box single-line">
URL http://localhost/[mysite]/Contact/RequireName 返回“Not OK.”,这是正确的。 URL http://localhost/[mysite]/Contact/RequireName?Name=something 返回“OK。”,这是正确的。
但是当我编辑该字段时,甚至当我提交完整的表单时,验证都不会发生。 我确定我错过了一些东西。如果你能帮助我,谢谢。
【问题讨论】:
-
根据我的经验,客户端验证错误的最常见原因是缺少 javascript 引用。您可以在表单上查看源代码并发布生成的 HTML 吗?
-
另外,另一个常见问题是 web.config 中未启用
ClientValidationEnabled和UnobtrusiveJavaScriptEnabled- 你检查了吗? (这在您参考的 MSDN 文章中给出的“检查验证代码”部分的第 3 步中进行了描述。) -
ClientValidationEnabled 和 UnobtrusiveJavaScriptEnabled 都已启用,我没有特殊的 javascript 包含,我没有在我遵循和链接的教程中提到 javascript 包含。
-
我忘了提,但是当我提交完整的表单(不是逐个字段)时,标准验证如 [StringLength(6, MinimumLength = 3)] 或 [Required] 工作正常,显然只有[Remote ...] 验证类型不起作用。
标签: c# asp.net-mvc-4 validation