为什么带有DataFormatString的DisplayFormat将"/"(斜杠)更改为" - "(破折号)?

Dry*_*ods 14 .net datetime-format asp.net-mvc-3

我正在使用以下代码

// Model
[DisplayFormat(
    ApplyFormatInEditMode = true, 
    DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime StartDate { get; set; }

// View
@Html.EditorFor(model => model.StartDate)
Run Code Online (Sandbox Code Playgroud)

格式化,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";
Run Code Online (Sandbox Code Playgroud)

但这不是一个解决方案,因为我可能正在使用不同的文化,我仍然希望以不同的方式显示日期.

如果当前文化告知应显示日期,dd-MM-yyyy则使用DisplayFormat上述方法无效并且日期不显示dd/MM/yyyy.

Joã*_*elo 27

DataFormatString = @"{0:dd\/MM\/yyyy}"改用.由于/标识了应由当前区域性的默认日期分隔符替换的字符,因此需要对其进行转义以使其在格式中用作文字.

这样,您可以使用固定格式而不是动态使用当前区域性的日期分隔符的格式.

逃避/角色的另一种方法是:DataFormatString = "{0:dd'/'MM'/'yyyy}"