2012-09-25 47 views
1

我在使用Scaffolding Nuget創建CRUD視圖的MVC 4項目中使用了Data Annotations。我正在使用層級數據庫模型而不是EF。MVC 4數據註釋

所以我的課的樣子如下:

[MetadataType(typeof(CustomerMetaData))] 
public partial class UserProfile: IBrObject 
{ 
    public UserProfile(string aspUserName): this() 
     { 
      this.AspUserName = aspUserName; 
     } 

    public string AspUserName { get; set; } 
    public DateTime MetaDateFirstSaved { get; set; } 
} 

public class CustomerMetaData 
{ 
      [ReadOnly(true)]    
      [ScaffoldColumn(false)] 
      [DisplayName("ASP UserName")] 
      public object AspUserName { get; set; } 
      [DisplayName("Date First Saved")] 
      [DataType(DataType.Date)] 
      public object MetaDateFirstSaved { get; set; } 
} 

當我試圖創建腳手架的NuGet意見仍然顯示AspUserName列不隱藏或只有不讀。 我如何隱藏或只讀?

+1

可能重複[是否只讀(真)與Html.EditorForModel合作?](http://stackoverflow.com/questions/3510081/does -readonlytrue-work-with-html-editorformodel) –

+0

「Mystere Man」uihint屬性可能是正確的選擇。謝謝 –

回答

1

您在元數據中使用object,在實際視圖模型中分別使用stringDateTime,因此它們不匹配。

更新

另一種可能性(我很肯定這是什麼在你的情況發生),是因爲在視圖模型類型定義爲接口類型,而不是類類型。

在您的意見中,將@model IBrObject替換爲@model UserProfile

希望這有助於

+0

我從下面的示例看http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx –

+0

我試過相同的數據類型沒有對象,但沒有運氣。 –

+0

更新了我的答案。一旦問題得到解決,請不要忘記將答案標記爲已接受。謝謝 –

0

對象AspUserName!=字符串AspUserName