如果我在模型類中有一個類型的屬性,DateTime該如何以特定格式呈現(xiàn)它(例如,以ToLongDateString()返回格式)?我已經(jīng)嘗試過了...@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())...這將引發(fā)異常,因為表達式必須指向?qū)傩曰蜃侄?。和這個...@{var val = item.MyDateTime.ToLongDateString(); Html.DisplayFor(modelItem => val);}...這不會引發(fā)異常,但是呈現(xiàn)的輸出為空(盡管val包含預(yù)期值,如我在調(diào)試器中看到的)。提前感謝您的提示!編輯ToLongDateString僅是一個例子。我實際上想要使用的ToLongDateString是DateTimeand 的自定義擴展方法DateTime?:public static string FormatDateTimeHideMidNight(this DateTime dateTime){ if (dateTime.TimeOfDay == TimeSpan.Zero) return dateTime.ToString("d"); else return dateTime.ToString("g");}public static string FormatDateTimeHideMidNight(this DateTime? dateTime){ if (dateTime.HasValue) return dateTime.Value.FormatDateTimeHideMidNight(); else return "";}因此,我認為我無法在ViewModel屬性上使用DisplayFormat屬性和DataFormatString參數(shù)。
3 回答

猛跑小豬
TA貢獻1858條經(jīng)驗 獲得超8個贊
如果所有DateTime類型的呈現(xiàn)方式都相同,則可以使用自定義DateTime顯示模板。
在您的Views文件夾中,在控制器特定的views文件夾下或“ Shared”文件夾下創(chuàng)建一個名為“ DisplayTemplates”的文件夾(這些工作類似于局部文件)。
里面創(chuàng)建一個名為文件DateTime.cshtml是需要DateTime為@model您想如何使您的日期代碼:
@model System.DateTime
@Model.ToLongDateString()
現(xiàn)在,您可以在視圖中使用它,它應(yīng)該可以工作:
@Html.DisplayFor(mod => mod.MyDateTime)
只要您遵循將其添加到“ DisplayTemplates”文件夾并命名該文件以匹配要顯示的類型的約定,MVC就會自動使用該文件來顯示您的值。這也適用于使用“ EditorTemplates”編輯方案。
- 3 回答
- 0 關(guān)注
- 668 瀏覽
添加回答
舉報
0/150
提交
取消