我刚刚意识到,当我在布局页面上放置表单标签时,围绕 RenderBody 部分,不会生成不显眼的验证。像这样的东西:
@using (Html.BeginForm())
{
<input type="submit" value="save" />
<div>
@RenderBody()
</div>
}
正如您可能已经猜到的那样,我想在我的内容上生成按钮。这是正确的不引人注目的行为吗?
顺便说一句,如果我把表单放在一个特定的页面中,一切都像魅力一样: data-val* 属性很好地生成。
我将感谢您的宝贵帮助。
此致
罗德里戈
最佳答案
你可以在你的 View 中应用一个奇怪的黑客:
@{
var originalContext = ViewContext.FormContext;
ViewContext.FormContext = new FormContext();
}
<!-- This will generate proper HTML5 data-* validation attributes -->
@Html.TextBoxFor(x => x.Prop1)
@Html.ValidationMessageFor(x => x.Prop1)
@Html.TextBoxFor(x => x.Prop2)
@Html.ValidationMessageFor(x => x.Prop2)
@{
ViewContext.FormContext = originalContext;
}
关于asp.net-mvc-3 - ASP.NET MVC 3 : Generate unobtrusive validation when BeginForm is on the layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4997269/