2013-10-09 46 views
0

我已经设置了一些POCO模型类,用于实体框架。我在DbContextValidateEntity覆盖中做了一些验证。我从ValidateEntity函数返回一个DbEntityValidationResult,我可以看到在运行期间,我添加了一些DbValidationError。我甚至可以看到这些错误ModelState里面我Controller功能内,使用下面的代码...为什么我的视图中不显示ValidateEntity错误?

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强类型等

验证来自Character模型的错误正确显示,但来自ValidateEntity函数的验证错误未显示该属性名称。

任何想法为什么不呢?

+1

发表您的观点 页面! –

回答

1

您需要在代码中包含ValidationMessageFor帮助程序以显示模型级属性。

你应该有

@Html.EditorFor(model => model.Character) 
@Html.ValidationMessageFor(model => model.Character) 

如果在没有显示的错误改变

@Html.ValidationSummary(true) 

在视图顶部的

@Html.ValidationSummary(false) 

,所以你可以看到所有的验证错误,并确保它们实际上被正确添加。

相关问题