代码之家  ›  专栏  ›  技术社区  ›  D'Arcy Rittich

使用html.editorfor和html.textbox传递html属性和[DisplayFormat]

  •  2
  • D'Arcy Rittich  · 技术社区  · 14 年前

    我想用 Html.EditorFor 我需要两个 DisplayFormat 属性和要应用的HTML属性(特别是CSS类)。

    Html.TextBox 忽视 显示格式 属性,以及 文件编辑器 不会让我传递HTML属性。除了自己编写HTML,这里的首选解决方案是什么?

    2 回复  |  直到 11 年前
        1
  •  3
  •   Darin Dimitrov    14 年前

    有一种可能性:

    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 */
    }
    
        2
  •  0
  •   magritte    13 年前

    我刚才也遇到了这个问题。如果您使用的是日期选取器等编辑器模板,则只需执行以下操作(使用Razor):

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

    这将使用displayformat属性中的值格式化日期。