当我将部分表单放在局部视图中时,除了局部视图中的表单元素外,所有表单部分都会获得无阻碍的语法。
我发现如何“应用”无障碍语法的唯一方法是在局部视图中启动另一种形式。
查看:
@using (Ajax.BeginForm("SubmitHandler", new DefaultAjaxOptions()))
{
@Html.EditorFor(m => m.Name)
@Html.Partial("MyPartialView", Model)
}
PartialView:
@Html.TextBoxFor(m => m.SomeContent)
输出:
<input class="text-box single-line" data-val="true" data-val-required="This field is required." id="Name" name="Name" type="text" value="">
<input id="SomeContent" name="SomeContent" type="text" value="0">
因此,只有View中的input元素具有无阻碍语法且部分视图不具有...
有没有办法在局部视图中应用无障碍语法,这不需要你开始一个新的表单?
答案 0 :(得分:4)
我实际上找到了更好的解决方案!在asp.net mvc代码中挖掘了一下,MvcForm类创建了所有无阻碍的验证语法。
所以如果你使用:
@using(new MvcForm(ViewContext))
{
}
而不是
@using(Html.BeginForm())
{
}
它仍将应用无阻碍语法,但不会创建表单html标记:)