ModelState 错误不以部分视图形式显示
ModelState errors don't show in partial view form
我在局部视图中有一个表单的一部分。该表单部分可在不同页面中重复使用:
第 1 页(带 CompanyId):
<form method="post">
<partial name="_partialForm" model="Model.MyModel" />
<input asp-for="CompanyId />
<input type="submit" />
</form>
第 2 页(无 CompanyId):
<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>
我的模型:
[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"
修饰,因此绑定正常。
当我 post 表单时,我检查 if (!ModelState.IsValid)
如果没有 return Page()
。
结果是,如果 FirstName 或 LastName 为空,则 ModelState 无效,但不会显示任何验证消息。
如果我将表单标签移动到部分视图(这意味着我不能保留 CompanyId 字段,因为它只能在单个页面上可用),则会显示验证错误。
有什么办法可以解决这个问题吗?
解决方案是 ViewData.TemplateInfo.HtmlFieldPrefix = "MyModel";在部分。
我在局部视图中有一个表单的一部分。该表单部分可在不同页面中重复使用:
第 1 页(带 CompanyId):
<form method="post">
<partial name="_partialForm" model="Model.MyModel" />
<input asp-for="CompanyId />
<input type="submit" />
</form>
第 2 页(无 CompanyId):
<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>
我的模型:
[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"
修饰,因此绑定正常。
当我 post 表单时,我检查 if (!ModelState.IsValid)
如果没有 return Page()
。
结果是,如果 FirstName 或 LastName 为空,则 ModelState 无效,但不会显示任何验证消息。
如果我将表单标签移动到部分视图(这意味着我不能保留 CompanyId 字段,因为它只能在单个页面上可用),则会显示验证错误。
有什么办法可以解决这个问题吗?
解决方案是 ViewData.TemplateInfo.HtmlFieldPrefix = "MyModel";在部分。