asp.net-mvc-3 - ASP.NET MVC 3 : Generate unobtrusive validation when BeginForm is on the layout

标签 asp.net-mvc-3 unobtrusive-validation

我刚刚意识到,当我在布局页面上放置表单标签时,围绕 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/

相关文章:

javascript - 条件不显眼的验证模式

asp.net-mvc - 更改特定表单的验证设置

asp.net-mvc-3 - OutputCache 因复杂对象属性而异

c# - 尝试保存实体时 ModelState.isvalid 为 false,错误表示相关实体中需要一个字段

unobtrusive-javascript - 如何使 ASP.NET MVC3 客户端表单验证在自定义表单发布事件之前运行

javascript - 只允许输入控件中的某些字符

jquery - 使用 asp.net core 删除所需的验证

c# - 测量 Asp.Net MVC 应用程序请求/响应时间的准确方法

asp.net-mvc-3 - MVC 3客户端验证,模型绑定(bind)十进制值和文化(不同的小数分隔符)

asp.net-mvc-3 - JSON 和 ASP.Net MVC Controller 不绑定(bind)对象列表的属性