向EditorFor添加一个类 - razor c#

时间:2013-12-10 02:41:28

标签: c# asp.net-mvc razor editorfor

(编辑器用于名为“ADate”的DateTime属性

我正在尝试这个,但它不起作用。

@Html.EditorFor(model => model.ADate, new { cssClass = "date" } )

所以我尝试了这个:

@Html.TextBoxFor(model => model.ADate, new { @class = "date" })

但它输出的是type = text .. ofcourse它。

所以我尝试了一个模板......我在共享中添加了一个文件夹:

Shared/EditorTemplates

然后我创建了一个名为 Date.cshtml

的.cshtml局部视图

现在我在里面放什么:O ...

我试图了解很多帖子和堆栈溢出条目,但它并没有陷入其中。

目标是在“。date”类使用“。date”类的整个应用中将 datepicker 附加到“。date”类... TextBoxFor适用于我的添加类部分......但正如我所说,类型从日期变为文本:(

3 个答案:

答案 0 :(得分:7)

好的,这就是你能做的:

EditorTemplates文件夹中创建名为DateTime.cshml的模板(如果您将该名称用于日期,名称将自动解析,否则您必须在使用时指定该名称)。 然后在其中:

@model System.DateTime

@Html.TextBox(
   string.Empty, 
   Model.ToString("yyyy-MM-dd"),
   new { @class="datepicker", @type = "date"})

使用最后一个参数,您可以指定任何html属性(类,数据,类型等)。

然后你就这样使用它:

@Html.EditorFor(x => x.ADate)

如果您选择使用其他名称命名模板,可以通过调用另一个重载来指定它:

@Html.EditorFor(x => x.ADate, "MyOtherAwesomeTemplate")

答案 1 :(得分:2)

EditorFor html帮助器不会为DateTime属性呈现日期选择器(如果这是你想要做的)。 DateTime的默认EditorFor是文本输入。如果您想使用日期选择器,则必须使用jQuery DatePicker(或任何其他第三方日期选择器)。

此外,EditorFor助手没有html属性的参数。如果要分配类,则必须使用TextBoxFor。

在您的主视图中,使用EditorFor,如下所示:

@Html.EditorFor(model => model.ADate)

然后,在您的编辑模板(Date.cshtml)中,您将拥有:

@model System.DateTime

<script type="text/javascript">
    $(function () {
        $(".date").datepicker();
    });
</script>

@Html.TextBox("", Model.ToString("d"), new { @class = "date" })

您可以从此处下载jQuery UI:Download jQuery UI

并且,您可以在此处了解有关jQuery DatePicker的更多信息:jQuery DatePicker

答案 2 :(得分:0)

你可以这样做

@Html.EditorFor(model => model.ADate)

<style type="text/css">

#ADate
{
 @* your css properties goes here *@
}
</style>

这适用于MVC3 Razor