我正在使用以下代码
// Model
[DisplayFormat(
ApplyFormatInEditMode = true,
DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime StartDate { get; set; }
// View
@Html.EditorFor(model => model.StartDate)
格式化
StartDate
,但结果是xx-xx-xxxx
而不是xx/xx/xxxx
。如何解决此问题并始终使用xx/xx/xxxx
格式?更新:
将文化更改为
en-US
似乎可行:var culture = new CultureInfo(userCulture);
System.Threading.Thread.CurrentThread.CurrentCulture = "en-US";
System.Threading.Thread.CurrentThread.CurrentUICulture = "en-US";
但这不是解决方案,因为我可能使用了不同的文化,并且我仍然想以其他方式显示日期。
如果当前的文化告诉您日期应显示
dd-MM-yyyy
,则按上述方式使用DisplayFormat
无效,日期显示也不像dd/MM/yyyy
。 最佳答案
请改用DataFormatString = @"{0:dd\/MM\/yyyy}"
。由于/
标识了一个字符,该字符应被当前区域性的默认日期分隔符替换,因此您需要对其进行转义以使其用作格式中的文字。
这样,您将拥有一种固定格式,而不是一种动态使用当前区域性的日期分隔符的格式。
转义/
字符的替代方法可以是:DataFormatString = "{0:dd'/'MM'/'yyyy}"
关于.net - 为什么带DataFormatString的DisplayFormat会将“/”(斜杠)更改为“-”(破折号)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8673174/