0

我在使用mvc2時遇到問題。DataAnnotation屬性在Asp.Net MVC2中不起作用

我正在使用實體框架作爲我的ORM。我使用POCO實體生成器來創建POCO對象。我將生成的對象移動到單獨的項目。我遵循這裏列出的步驟(Tutorial)。這是我的項目結構

Sports.Data - 實體Frmework和數據訪問

Sports.Entities - 生成的POCO對象和哥們類

Sports.Web - Web應用程序

在Sports.Entities項目我已經爲生成的pocos創建好友類。

我遇到的問題是屬性被mvc忽略。驗證不起作用並且正在顯示正確的標籤文本。顯示「襯衫尺寸」而不是「襯衫尺寸」。

我在做什麼錯?

感謝您的任何幫助。

這是代碼。

<div> 
    <%: Html.LabelFor(m => m.Player.ShirtSize)%> 
</div> 
<div class="editor-field"> 
    <%: Html.EditorFor(m => m.Player.ShirtSize) %> 
    <%: Html.ValidationMessageFor(m => m.Player.ShirtSize)%> 
<div> 

    namespace Sports.Entities 
{ 
    [MetadataType(typeof(PlayerMetadata))] 
    public partial class Player 
    { 
     public double PointsPerGame { 
      get { return (double) this.Points/this.MatchesPlayed; } 
     } 
    } 
    public class PlayerMetadata 
    { 
     [Required(AllowEmptyStrings = false, ErrorMessage = "First Name is required.")] 
     [StringLength(50, ErrorMessage = "First Name must be 50 characters or less")] 
     [DataType(DataType.Text)] 
     object FirstName { get; set; } 

     [Required(AllowEmptyStrings = false, ErrorMessage = "Last Name is required.")] 
     [StringLength(50, ErrorMessage = "First Name must be 50 characters or less")] 
     [DataType(DataType.Text)] 
     object LastName { get; set; } 

     [Required(ErrorMessage = "Shirt Size is required.")] 
     [EnumDataType(typeof(ShirtSizeEnum), ErrorMessage = "Shirt Size is invalid.")] 
     [DisplayName("Shirt Size")] 
     object ShirtSize { get; set; } 

     [Required(ErrorMessage = "Gender is required.")] 
     [EnumDataType(typeof(GenderEnum) , ErrorMessage = "Gender is invalid.")] 
     object Gender { get; set; } 

     [Required(AllowEmptyStrings = false , ErrorMessage = "Date of birth is required.")] 
     [DataType(DataType.Date)] 
     object DateOfBirth { get; set; } 
    } 
} 

回答

1

感謝您的回答。我解決了這個問題。夥伴類中的屬性需要公開。在公開發布這些資產後,所有事情都開始了。

public object ShirtSize { get; set; } 
0

嗯,你發佈的代碼看起來很穩固。你的視圖是強類型的並且繼承了適當的類嗎?

Inherits="System.Web.Mvc.ViewPage(Of YourWebApp.Sports.Entities.Player) 

也,這聽起來像一個愚蠢的問題,但你傳遞填充Player對象返回到視圖既當您第一次填充視圖,當你將它張貼回來?最後你是否一定要檢查

if ModelState.IsValid?