我已经设置了一些POCO Model类,我们已经设置好与Entity Framework一起使用。我在DbContext
的{{1}}覆盖中进行了一些验证。我从ValidateEntity
函数返回DbEntityValidationResult
,我可以看到在运行期间我添加了一些ValidateEntity
。我甚至可以使用以下代码在DbValidationError
函数内的ModelState
内看到这些错误...
Controller
但由于某些原因,这些错误没有显示在Razor视图中所需的属性名称。我使用的视图模型如下所示......
catch (DbEntityValidationException ex)
{
foreach (var entity in ex.EntityValidationErrors)
{
foreach (var error in entity.ValidationErrors)
{
ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
}
}
}
在我使用此public class CharacterCreateModel
{
private Character m_character;
#region Properties
public Character Character
{
get
{
return m_character;
}
set
{
m_character = value;
}
}
#endregion
}
观看模式强力输入的Razor视图中,我只使用标准CharacterCreateModel
等。
来自@Html.TextBoxFor
模型的验证错误会正确显示,但Character
函数的验证错误未显示该属性名称。
知道为什么不呢?
答案 0 :(得分:1)
您需要在代码中包含ValidationMessageFor帮助程序以显示模型级属性。
你应该
@Html.EditorFor(model => model.Character)
@Html.ValidationMessageFor(model => model.Character)
如果未显示错误,则更改
@Html.ValidationSummary(true)
在您的视图顶部
@Html.ValidationSummary(false)
因此您可以看到所有验证错误,并确保它们实际上已正确添加。