2012-02-23 96 views
2

在我的模型顯示僅日期我有屬性格式:在Razor視圖

public DateTime CreatedFrom { get; set; } 

在強類型的視圖我怎麼顯示日期和使其可編輯(但只有日期,沒有時間)。 我使用:

@Html.EditorFor(m=>m.CreatedFrom.ToShortDateString()) 

當我想要去那個觀點例外occures:

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions. 

怎麼做是正確的?

回答

1

Linquinze是對的,EditorFor是表達式而不是Func。

如果你想顯示一個文本框,雖然你的日期,你可以使用:

@Html.TextBox("CreatedFrom", @Model.CreatedFrom.ToShortDateString()) 

,我相信會取得同樣的事情。

1

注意定義

Html.EditorFor<T1, T2>(Expression<T1, T2> x) 

Html.EditorFor<T1, T2>(Func<T1, T2> f) 

所以剃刀引擎只查找字段名CreatedFrom,但無法處理方法調用。 也許你需要額外的js來幫助來回轉換。

1

卡米爾,你不能綁定模型的屬性方法,你只能將其綁定到:

@Html.EditorFor(m=>m.CreatedFrom) 

我會強烈建議你整理一下你的控制器內的日期時間問題(或服務類),或者作爲初始HttpGet動作的一部分來填充視圖,或者在您將值發回時(不太理想的場景)在HttpPost內部。無論哪種方式,補救措施都必須在控制器級別進行。