我有以下数据模型
public class User
{
[Required(ErrorMessage = "First name required!")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last name required!")]
public string LastName { get; set; }
}
我有以下名为“UserForm”的视图,它使用上面的模型
@model User
@using (Html.BeginForm("myAction", "MyController"))
{
@Html.TextBoxFor(model => model.FirstName)
@Html.TextBoxFor(model => model.LastName)
@Html.ValidationSummary()
<input type="submit" value="Save" />
}
我已经测试了上面的代码和不显眼的验证和表单帖子正常工作,没有任何问题。但是,如果我将上面的视图作为局部视图包含在第二个视图中,如下所示,那么客户端不显眼的验证将停止工作。
<div id="myPartialView">
<!-- Include form as partial view -->
@{Html.RenderAction("myAction", "MyController");}
</div>
我尝试使用以下javascript行明确重新加载不显眼的验证
jQuery.validator.unobtrusive.parse('#myPartialView');
现在验证工作正常,但我无法提交表单。我使用了fiddler,我可以看到单击提交按钮不会触发任何活动。对我可能做错了什么的想法?
答案 0 :(得分:2)
对于任何绊倒这个问题的人,我现在已经解决了这个问题。我的表单嵌入在Jquery模式框中,我有一个无效的html标记。这并没有导致模式停止工作,但阻止我的表单提交。 (我仍然不确定为什么)。我使用来自w3c
的优秀html验证器发现了这个错误应该注意的是,我仍然需要
jQuery.validator.unobtrusive.parse('#myPartialView');
使客户端验证适用于动态内容。这是一个众所周知的问题,在@Mate上面发布的链接中有更详细的讨论