我應該與要求的格式(「DD/MM/YYYY」)格式我所有的日期時間屬性的通用日期時間編輯模板:MVC3兒童行動打破我的DateTime編輯模板
@Html.TextBox(string.Empty, Model.ToString("dd/MM/yyyy"), new { @class = "datepicker" })
但對於一些原因格式不適合我的孩子的行爲。
如果我在做的MainPage @ Html.EditorFor(X => x.MyDate) .cshtml 我得到預期的結果: 「23/04/2012」
如果我這樣做@ Html.EditorFor(X => x.MyDate)在ChildAction .cshtml 我得到的出乎意料的結果是: 「2012-04-24」
我可以確認正在使用的編輯器模板,be澳洲英語,如果我改變它,像這樣(注意開頭的字符串WTF):
WTF @Html.TextBox(string.Empty, Model.ToString("dd/MM/yyyy"), new { @class = "datepicker" })
然後,如果我在ChildAction.cshtml
做@ Html.EditorFor(X => x.MyDate)我得到:「跆拳道2012-04-24」
任何想法?
更新
在我的追求重現此錯誤的MVC示例應用程序,我發現,其他兩兩件事是必需的:
public class DateTimeModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
DateTime date;
if (DateTime.TryParseExact(value.AttemptedValue, "dd/MM/yyyy", DateTimeFormatInfo.CurrentInfo, DateTimeStyles.AssumeLocal, out date))
{
return date;
}
return base.BindModel(controllerContext, bindingContext);
}
}
我假設每個人都知道如何連接該向上。另外,在MainPage.cshtml你必須通過模型的第二個參數的RenderAction
@{Html.RenderAction("Child", Model);}
當傳遞模型作爲第二個參數,MVC使用模型綁定來調用子操作(爲什麼?)。但是,日期的格式爲MM/dd/yyyy,因此它不適用於我的模型聯編程序,它假定我所有的日期都是dd/MM/yyyy格式。這就是爲什麼這不起作用。
但我該如何解決?日期與我的默認格式dd/MM/yyyy不匹配的唯一地方是呈現子動作時。
我不能重現此。你是否使用了一個javascript datepicker庫來修改輸入值?如果是,請嘗試暫時禁用它以查看它是否仍然發生。 – pjumble 2012-04-23 21:38:52
@pjumble查看更新。 – Kelly 2012-04-24 15:30:54