And*_*rei 13 asp.net-mvc mvc-editor-templates razor asp.net-mvc-3 asp.net-mvc-4
我需要更改日期格式dd.MM.yyyy.我收到客户端验证错误,因为ASP.NET MVC日期格式与我在服务器上的预期不同.
为了更改ASP.NET MVC日期格式,我试过:
Web.config文件:
<globalization uiCulture="ru-RU" culture="ru-RU" />
Run Code Online (Sandbox Code Playgroud)
模型:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime? ServiceCreatedFrom { get; set; }
Run Code Online (Sandbox Code Playgroud)
编辑模板:
@model DateTime?
@Html.TextBox(string.Empty, (Model.HasValue
? Model.Value.ToString("dd.MM.yyyy")
: string.Empty), new { @class = "date" })
Run Code Online (Sandbox Code Playgroud)
视图:
@Html.EditorFor(m => m.ServiceCreatedFrom, new { @class = "date" })
Run Code Online (Sandbox Code Playgroud)
甚至Global.asax:
public MvcApplication()
{
BeginRequest += (sender, args) =>
{
var culture = new System.Globalization.CultureInfo("ru");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
};
}
Run Code Online (Sandbox Code Playgroud)
没有什么对我有用.
Dar*_*rov 15
以下应该有效:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime? ServiceCreatedFrom { get; set; }
Run Code Online (Sandbox Code Playgroud)
并在您的编辑器模板中:
@model DateTime?
@Html.TextBox(
string.Empty,
ViewData.TemplateInfo.FormattedModelValue,
new { @class = "date" }
)
Run Code Online (Sandbox Code Playgroud)
然后:
@Html.EditorFor(x => x.ServiceCreatedFrom)
Run Code Online (Sandbox Code Playgroud)
你传递给EditorFor调用的第二个参数不符合你的想法.
对于此自定义编辑器模板,由于您在视图模型属性上明确指定了格式<globalization>,因此web.config中的元素和当前线程文化将具有0效果.当前线程文化与标准模板一起使用,并且当您未使用[DisplayFormat]属性覆盖格式时.
| 归档时间: |
|
| 查看次数: |
22554 次 |
| 最近记录: |