如何在Html.TextBoxFor中使用ShortDate字符串格式

asp.net asp.net-mvc asp.net-mvc-2 c# entity-framework

使用Entity Framework和MVC2,我有一系列日期文本框,我想以短日期格式顯示模型中的數據,但我必須使用Html.TextBoxFor才能使更新代碼正常工作(嘗試使用HTML) .Textbox數據永遠不會保存到模型中)。

<%: Html.TextBoxFor(model => model.Item.Date, String.Format("{0:d}", Model.Item.Date))%>

我已經嘗試過操作字符串格式表達式,並將元數據添加到映射到Entity Framework模型類的部分類中,但是我仍然在表單渲染中填充以下文本框:

01/01/2011 00:00:00 

而不是

01/01/2011

一般承認的答案

<%: Html.EditorFor(model => model.Item.Date) %>

在您的視圖模型上:

[DataType(DataType.Time)]  
[DisplayFormatAttribute(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime Date { get; set; }

更新:

完整示例:

模型:

public class MyModel
{
    public Item Item { get; set; }
}

public class Item
{
    [DataType(DataType.Time)]
    [DisplayFormatAttribute(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
    public DateTime Date { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyModel
        {
            Item = new Item { Date = DateTime.Now }
        });
    }
}

視圖:

<%: Html.EditorFor(model => model.Item.Date) %>


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因