我在局部视图中有一部分表格。该表单可在不同页面中部分重用:
第1页(带有CompanyId):
<form method="post">
<partial name="_partialForm" model="Model.MyModel" />
<input asp-for="CompanyId />
<input type="submit" />
</form>
第2页(无公司编号):
<form method="post">
<partial name="_partialForm" model="Model.MyModel" />
<input type="submit" />
</form>
_partialForm:
@model Models.MyModel
<label asp-for="FirstName"></label>
<input asp-for="FirstName />
<span asp-validation-for="FirstName"></span>
<label asp-for="LastName"></label>
<input asp-for="LastName />
<span asp-validation-for="LastName"></span>
MyModel:
[Required]
[DisplayName("First name")]
public string FirstName { get; set; }
[Required]
[DisplayName("Last name")]
public string LastName { get; set; }
public Guid? CompanyId { get; set; }
当我查看呈现页面的源时,label asp-for
值在那里,input
字段用data-val="true" data-val-required="Required"
装饰,因此绑定是可以的。
发布表单时,我检查if (!ModelState.IsValid)
,如果不是return Page()
,则检查。
结果是,如果FirstName或LastName为空,则ModelState无效,但不显示验证消息。
如果我将表单标签移动到部分视图(这意味着我不能保留CompanyId字段,因为它只能在单个页面上显示),则会显示验证错误。
有什么办法可以解决这个问题?
答案 0 :(得分:0)
解决方案是执行ViewData.TemplateInfo.HtmlFieldPrefix =“ MyModel”;在局部。