I am trying to use Html.EditorFor for a value where I need both a DisplayFormat attribute and an HTML attribute (specfically a CSS class) to be applied.
Html.TextBox ignores the DisplayFormat attribute, and Html.EditorFor will not let me pass Html attributes. Other than writing the HTML myself, what is the pre开发者_StackOverflow社区ferred solution here?
Here's one possibility:
public class MyModel
{
    [UIHint("MyDateTemplate")]
    public DateTime Value { get; set; }
}
and in ~/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" }
)%>
and in the main view:
<%: Html.EditorForModel()
or yet another one:
public class MyModel
{
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime Value { get; set; }
}
and in your main view:
<div class="foo">
    <%: Html.EditorFor(x => x.Value) %>
</div>
and in your css:
.foo input {
    /* define some rule here */
}
I came across this same issue just now. If you are using an editor template for e.g. a date picker, you can simply do (using Razor):
@model System.DateTime
@Html.TextBox("", Model.ToString(ViewData.ModelMetadata.DisplayFormatString), new { @class = "date" })
That will format the date using the value from the DisplayFormat attribute.
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论