对MVC 2.0中LabelFor()html帮助器的使用感到困惑

时间:2013-10-24 07:50:19

标签: asp.net-mvc helpers

我正在开发一个MVC 2.0 C#web Applciation。在我的一个表单中,我正在使用LabelFor()html帮助器。

我使用以下语法:

 <%=Html.LabelFor(model=>model.Addedon)%>

在这里,对于这个标签,我想关联一个DateTime.Now

的初始值

我试过这样的事情:

<%=Html.LabelFor(model=>model.Addedon,new{value=DateTime.Now})%>

但是,我收到一个错误,说这个帮助者有两个参数没有超载。请帮助

更新:

表单是创建表单/添加表单,它进行插入操作。所以,我正在构建一个模型并将该模型更新到数据库。

在那个模型中,我有一个名为createdby的字段。因此,我需要将此值与登录的用户名和执行插入操作相关联。

那么,如何将此用户名值与模型字段相关联,我需要显示为标签,以便它只读字段。

希望这说清楚..

1 个答案:

答案 0 :(得分:3)

LabelFor仅适用于您猜测它,呈现<label>元素。 它还使用[Display][DisplayName]属性,因此您可以使用带有自定义名称的强类型标签。

你所追求的可能就是:

<div>
    <%= Html.LabelFor(model => model.Addeon) %>
</div>
<div>
    <%= Html.DisplayFor(model => model.Addeon) %>
</div>

因此LabelFor将生成属性名称描述(例如“Addeon”),而DisplayFor将呈现属性值。如果您需要自定义格式,DisplayFor可以使用[DisplayFormat]属性。您可以在视图模型的构造函数中设置默认属性值:

public class ViewModel
{
    [Display(Name = "My awesome date")]
    public DateTime Addeon {get;set;}

    public ViewModel()
    {
        Addeon = DateTime.Now;
    }
}

[编辑]

实际上,你的编辑会提出一个好的第二个问题,而不是把它放在这里。无论如何,在你的情况下,我会创建一个专用的视图模型,它将保存你需要的属性(例如用户名),并将填入控制器。其他所有内容在概念上都是相同的 - 视图将绑定到视图模型。