Asp.net MVC中关于@Html标签Label、Editor使用

@Html帮助器简单说明,记录些基本的跟HTML中对应的@html帮助器,@Html基本包含了html中的表单控件和常用Html

在@Html中,带有For的主要是针对强类型的Html类型。

用于说明@Html中标签,定义Student对象用于辅助说明,

[csharp]view plaincopy

  1. public class Student
  2. {
  3. /// <summary>
  4. /// 姓名
  5. /// </summary>
  6. ///
  7. [DisplayName("姓名")]
  8. public string Name
  9. {
  10. get;
  11. set;
  12. }
  13. /// <summary>
  14. /// 年龄
  15. /// </summary>
  16. public int Age
  17. {
  18. get;
  19. set;
  20. }
  21. }

在cshtml页面定义@model Student

Label标签,在LabelExtensions类中实现

1、 @Html.Label()

返回一个 HTML label 元素和由指定表达式表示的属性的属性名称。

参数:string expression,string labelText

expression:一个表达式表示要显示的属性

labelText:显示文字

例:

[html]view plaincopy

  1. @Html.Label("weight") 输出:<label for="weight">weight</label>
  2. abel("name","姓名") 输出:<label for="name">姓名</label>

2、 @Html.LabelFor()

和@Html.Label()类似,只是主要针对强类型

例:

[html]view plaincopy

  1. @Html.LabelFor(model=>mode.Name) 输出: <label for="Name">Name</label>
  2. @Html.LabelFor(model=>mode.Name,"姓名") 输出:<label for="name">姓名</label>
  3. 如果在上面实体添加[DisplayName("姓名")]特性(引用System.ComponentModel;)则会显示:
  4. <label for="Name">姓名</label>用于显示汉字很方便

3、 @Html.LabelForModel()

例:@Html.LabelForModel("name") 输出: <label for="">name</label>

Editor标签,表示应用程序中的Input表单控件,在EditorExtensions实现

1、 @Html.Editor()

返回一个由表达式表示的对象中的每个属性所对应的input元素

例:

[html]view plaincopy

  1. a、@Html.Editor("name") 输出;<input class="text-box single-line" name="name" type="text" value="" />

b、在加载的时候为input初始化值,这里用asp.net MVC新增的ViewBag属性;

[html]view plaincopy

  1. @{
  2. ViewBag.NameValue="张三"; // NameValue为动态类型
  3. 或者
  4. ViewData["NameValue"]="张三";
  5. }
  6. @Html.Editor("NameValue") 输出<input class="text-box single-line" name="NameValue" type="text" value="张三" />

c、@Html.Editor("name",Model.Name)

第二个参数为object additionalViewData 参数 主要为视图模型的数据 (Model为System.Web.Mvc.Model对象,在加载页面引用@model Student 对象),

但不知道这样Input为什么没显示默认值。不知道不是不asp.net mvc3中不支持了,希望知道的给予说明下。

2、 @Html.EditorFor()

返回一个由表达式表示的对象中的每个属性所对应的input元素,主要是针对强类型,一般这种方式用得多些

a、@Html.EditorFor(mode=>mode.Name)

如果返回的View给Student实体赋予值,则输出输出<input class="text-box single-line" />