asp.net mvc的htmlHelper中有个方法DisplayNameForModel,什么作用?怎么用?
官网地址:http://msdn.microsoft.com/zh-cn/library/system.web.mvc.html.displaynameextensions%28v=vs.108%29.aspx
模型的显示名称?怎么设置模型的显示名称?
DisplayNameForModel只有在model定义了DisplayName时有用,简单说,DisplayNameFor是针对model里的"字段"别名,DisplayNameForModel则是针对整个model的别名.如果你model没有定义别名,那直接调用显然是没有什么效果和意义.
1 [Table("View_Product")] 2 [DisplayName("商品")] 3 public partial class Product 4 { 5 [Key] 6 [DisplayName("商品编号")] 7 public int ID { get; set; } 8 ... 9 }
例子.这时,你View里或T4里就可以直接用DisplayNameForModel来显示标题"商品",而不是Product了
确实是模型的显示名称。
比如,通常我们原来是这样写的
<form action="form_action.asp" method="get"> First name: <input type="text" name="fname" /> Last name: <input type="text" name="lname" /> <input type="submit" value="Submit" /> </form>
这里面的"First Name"和"Last Name"就是DisplayName。
通过在Model中定义这个属性,好外是保持一致性。
所有使用到这个Model的Form,可以通过访问此属性来提供UI的显示。
你新建一个MVC,就可以看到这样的语句
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) <fieldset> <legend>“登录”表单</legend> <ol> <li> @Html.LabelFor(m => m.UserName) @Html.TextBoxFor(m => m.UserName) @Html.ValidationMessageFor(m => m.UserName) </li> <li> @Html.LabelFor(m => m.Password) @Html.PasswordFor(m => m.Password) @Html.ValidationMessageFor(m => m.Password) </li> <li> @Html.CheckBoxFor(m => m.RememberMe) @Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" }) </li> </ol> <input type="submit" value="登录" /> </fieldset> <p> @Html.ActionLink("注册", "Register") 如果你没有帐户。 </p> }
注意一下,这里面的
@Html.LabelFor(m => m.UserName) //这个就是Label,原来的标题
@Html.TextBoxFor(m => m.UserName) //这个是TextBox,原来的输入框
DisplayNameForModel,……ForModel,不是LabelFor,显示属性的DisplayName可以用DisplayName()或者DisplayNameFor,可这个DisplayNameForModel的无参方法是干什么的
@北在北方: 基本是一样的.
public class Example {
[Display(Name = "Your Property Name")]
public string ExampleProperty { get; set; }
public Example() { ExampleProperty = "Example Property"; }
}
and use the following markup :
@Html.DisplayFor(m => m.ExampleProperty)
<hr />
@Html.DisplayNameFor(m => m.ExampleProperty)
this will yield the following results :
<!-- The DisplayFor() Helper rendered the actual value --> Example Property
<hr />
<!-- The DisplayNameFor() Helper rendered the Name property from the Display Attribute --> Your Property Name
@爱编程的大叔: 呃?!
<h6>DisplayNameForModel</h6>
<hr />
@Html.DisplayNameForModel()
截图:
我调用没有任何效果DisplayNameForModel
@北在北方:
@Html.DisplayNameFor(m => m.ExampleProperty)
@爱编程的大叔: No no no. @Html.DisplayNameForModel();//无参
官网文档说明:http://msdn.microsoft.com/zh-cn/library/system.web.mvc.html.displaynameextensions.displaynameformodel%28v=vs.108%29.aspx
@北在北方: 好吧,你自己看书。
一句话:微软真能折腾!
感谢!!!