Передача атрибутов HTML и [DisplayFormat] с использованием Html.EditorFor и Html.TextBox - PullRequest
2 голосов
/ 13 октября 2010

Я пытаюсь использовать Html.EditorFor для значения, для которого нужно применить атрибут DisplayFormat и атрибут HTML (в частности, класс CSS).

Html.TextBox игнорирует DisplayFormat attribute и Html.EditorFor не позволят мне передать атрибуты Html.Какое собственное решение здесь, кроме написания HTML-кода?

Ответы [ 2 ]

3 голосов
/ 14 октября 2010

Вот одна из возможностей:

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 */
}
0 голосов
/ 28 сентября 2011

Я сталкивался с этой же проблемой только сейчас. Если вы используете шаблон редактора, например, Выбор даты, вы можете просто сделать (используя Razor):

@model System.DateTime
@Html.TextBox("", Model.ToString(ViewData.ModelMetadata.DisplayFormatString), new { @class = "date" })

Это отформатирует дату, используя значение из атрибута DisplayFormat.

...