在MVC应用程序中,我想动态渲染表单的某些部分(就像控制器端的PartialView)
在局部视图中,我没有Html.BeginForm(),因为表单标签已经呈现.
@model Introduction.Models.Human
<div>
@Html.EditorFor(model => model.MarriageInformation.SpouseDetails)
<div class="editor-label">
@Html.LabelFor(model => model.MarriageInformation.DOM)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MarriageInformation.DOM)
@Html.ValidationMessageFor(model => model.MarriageInformation.DOM)
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我面临的问题是在这种情况下,EditorFor不会返回所有data-val-*属性.
<div>
<div class="editor-label">
<label for="MarriageInformation_SpouseDetails_Name">Name</label>
</div>
<div class="editor-field"><input class="text-box single-line" id="MarriageInformation_SpouseDetails_Name" name="MarriageInformation.SpouseDetails.Name" type="text" value="" />
Run Code Online (Sandbox Code Playgroud)
这是设计还是我在这里遗漏了什么?这附近有工作吗?
我想的选项是在ajax加载之后 - 剥离表单并注入内部内容.
我刚刚意识到,当我在布局页面上放置一个表单标签,围绕RenderBody部分时,不会生成不显眼的验证.像这样的东西:
@using (Html.BeginForm())
{
<input type="submit" value="save" />
<div>
@RenderBody()
</div>
}
Run Code Online (Sandbox Code Playgroud)
您可能已经猜到我想在我的内容上生成按钮.这是不正确的不引人注意的行为吗?
顺便说一句,如果我将表单放在特定页面中,一切都像魅力一样:data-val*属性生成良好.
我很感激你的宝贵帮助.
最好的祝福
罗德里戈