我正在尝试将Html.EditorFor
用于需要应用DisplayFormat
属性和HTML属性(通常是CSS类)的值。
Html.TextBox
忽略DisplayFormat
属性,Html.EditorFor
不允许我传递Html属性。除了自己编写HTML之外,这里的首选解决方案是什么?
答案 0 :(得分:3)
这是一种可能性:
public class MyModel
{
[UIHint("MyDateTemplate")]
public DateTime Value { get; set; }
}
和~/Views/Home/EditorTemplates/MyDateTemplate.ascx
:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%: Html.TextBox(
string.Empty,
Model.ToString("dd/MM/yyyy"),
new { @class = "foo" }
)%>
并在主视图中:
<%: Html.EditorForModel()
或另一个:
public class MyModel
{
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime Value { get; set; }
}
并在主视图中:
<div class="foo">
<%: Html.EditorFor(x => x.Value) %>
</div>
并在你的CSS中:
.foo input {
/* define some rule here */
}
答案 1 :(得分:0)
我刚才遇到过同样的问题。如果您正在使用编辑器模板,例如日期选择器,你可以简单地做(使用Razor):
@model System.DateTime
@Html.TextBox("", Model.ToString(ViewData.ModelMetadata.DisplayFormatString), new { @class = "date" })
这将使用DisplayFormat属性中的值格式化日期。