2010-10-13 31 views
2

我想爲Html.EditorFor使用Html.EditorFor作爲我需要應用DisplayFormat屬性和HTML屬性(特別是CSS類)的值。使用Html.EditorFor和Html.TextBox傳遞HTML屬性和[DisplayFormat]

Html.TextBox忽略DisplayFormat屬性,而Html.EditorFor不會讓我傳遞Html屬性。除了自己寫HTML之外,這裏最好的解決方案是什麼?

+0

你可以使用jquery添加css類 – Omu 2010-10-13 20:46:20

回答

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 */ 
} 
+0

嗯,爲了傳遞HTML屬性而需要實現一個控件似乎很奇怪,我不在應用程序的其他任何位置執行此操作。 – RedFilter 2010-10-15 22:59:56

0

我遇到同樣的問題剛纔來了。如果您正在使用編輯器模板日期選擇器,你可以簡單地使用(使用剃刀):

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

這將使用DisplayFormat屬性中的值格式化日期。

相關問題