2011-11-09 42 views
20

什么是MVC中对UIHint属性的使用。任何人都可以请给我一个简单的例子,说明如何使用它以及它的功能。MVC中的UIHint属性

回答

33

当使用显示或编辑模板,UIHint会告诉它要使用的模板:

[UIHint("SomeTemplate")] 
public class MyViewModel 
{ 
    public string SomeProperty { get; set; } 
} 

如果您在创建视图称为SomeTemplate.ascx(因为你是MVC2)一个显示模板/共享/ DisplayTemplates或查看/ {}控制器/ DisplayTemplates那么它会用当你这样做的模板:

@Html.DisplayForModel() // if Model is MyViewModel 

@Html.DisplayFor(m => m.ModelProperty) // if ModelProperty is of type MyViewModel 

编辑
如果你想在一个字段级别指定此:

public class MyViewModel 
{ 
    [UIHint("Birthday")] 
    public DateTime DateOfBirth { get; set; } 
} 

您就可在无论是在DisplayTemplates或EditorTemplates文件夹,名为生日/查看/共享或/浏览次数显示/编辑模板/ {控制器}。然后,当你这样做:

@Html.DisplayFor(m => m.DateOfBirth) 

@Html.EditorFor(m => m.DateOfBirth) 

它将使用UIHint

指定的模板
+0

感谢您的答复伟大的!但是如何在物业层面上指定..需要更清晰的表示请 – user1030181

+1

当然,这正是我花了一个小时寻找如何做。为什么他们很难找到这个属性? – neminem

+2

只能在属性和字段上使用'class'。 – Mrchief

15

UIHint只能在属性中使用未在类声明Dismissile状态。我正在使用MVC3,所以这可能已经从MVC2改变了。

“属性‘UIHint’不在此声明类型有效,这是唯一有效的‘属性,索引,字段’声明”