2013-10-09 50 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) 

,所以你可以看到所有的驗證錯誤,並確保它們實際上被正確添加。

相關問題