Asp.net 为什么不';我的ValidateEntity错误是否显示在我的视图中?
我已经设置了一些POCO模型类,用于实体框架。我在我的Asp.net 为什么不';我的ValidateEntity错误是否显示在我的视图中?,asp.net,asp.net-mvc,entity-framework,razor,Asp.net,Asp.net Mvc,Entity Framework,Razor,我已经设置了一些POCO模型类,用于实体框架。我在我的DbContext的ValidateEntity覆盖中执行一些验证。我从ValidateEntity函数返回一个DbEntityValidationResult,我可以看到在运行时我确实添加了一些DbValidationErrors。我甚至可以在我的控制器函数的ModelState中看到这些错误,使用以下代码 catch (DbEntityValidationException ex) { foreach (var entity in
DbContext
的ValidateEntity
覆盖中执行一些验证。我从ValidateEntity
函数返回一个DbEntityValidationResult
,我可以看到在运行时我确实添加了一些DbValidationError
s。我甚至可以在我的控制器
函数的ModelState
中看到这些错误,使用以下代码
catch (DbEntityValidationException ex)
{
foreach (var entity in ex.EntityValidationErrors)
{
foreach (var error in entity.ValidationErrors)
{
ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
}
}
}
但由于某些原因,这些错误不会在Razor视图中显示所需的属性名称。我使用的视图模型如下所示
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
,等等
来自字符
模型的验证错误将正确显示,但该属性名称不会显示来自验证属性
函数的验证错误
知道为什么吗?您需要在代码中包含ValidationMessageFor helper以显示模型级属性 你应该
@Html.EditorFor(model => model.Character)
@Html.ValidationMessageFor(model => model.Character)
如果不显示错误,则更改
@Html.ValidationSummary(true)
在您的视图顶部
@Html.ValidationSummary(false)
因此,您可以查看所有验证错误,并确保它们确实被正确添加。发布您的查看页面!