我有一个车辆部件的自定义编辑器模板,用于在telerik网格中插入mvc3 razor。编辑器模板包括日期时间字段。插入新车辆零件时,日期时间字段不正确,格式也会更改。
例如,如果我插入“06/10/2011”,即第6天,第10年和第2011年,在控制器中,模型中的dateTime字段为“10/06/2011”,即第10个月6和211年。我正在使用telerik的日期选择器
基本上,提交到控制器
后,日期和月份都会切换我的代码中有其他实例,我传递的是一个没有问题的日期时间字段,所以我认为问题在于我正在使用自定义编辑器模板......
以下是网格的代码:
@(Html.Telerik().Grid<VehiclePartsViewModel>()
.Name("VehiclePartsViewModel")
.ToolBar(commands =>
{ commands.Insert();
})
.DataKeys(keys => keys.Add(c => c.Id))
.ClientEvents(events => events.OnRowDataBound("onRowDataBound"))
.DataBinding(dataBinding => dataBinding
.Ajax()
.Insert(MVC.Vehicles.CustomCoverage._InsertPart().GetRouteValueDictionary())
.Select(MVC.Vehicles.CustomCoverage._SelectPart().GetRouteValueDictionary())
.Update(MVC.Vehicles.CustomCoverage._SavePart().GetRouteValueDictionary())
.Delete(MVC.Vehicles.CustomCoverage._DeletePart().GetRouteValueDictionary())
)
.Columns(columns =>
{
omitted..
})
.Footer(false)
.Editable(editing => editing.Mode(GridEditMode.PopUp))
简化的编辑器模板是:
<div>
@Html.LabelFor(v => v.ItemId, new { @class = "uc-caption"})
@Html.EditorFor(v => v.ItemId)
</div><br />
<div>
@Html.LabelFor(v => v.InstallDate, new { @class = "uc-caption"})
@Html.EditorFor(v => v.InstallDate, new { Modifiable = true })
</div>
我也在使用dateTime的编辑器模板,但我不相信问题在这里:
@(
Html.Telerik().DatePicker()
.Name(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty))
.HtmlAttributes(new { id = ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty) + "_wrapper" })
.ShowButton(true)
.Value(Model.HasValue ? Model.Value : new DateTime())
.ClientEvents(events => events.OnChange("onChangeDatePicker"))
.InputHtmlAttributes(new { style = "width:100%"})
.Enable(ViewData["Modifiable"] != null ? (bool)ViewData["Modifiable"] : true)
)
由于
答案 0 :(得分:2)
好的,所以我终于能够通过telerik解决这个问题了。将全球化设置为true似乎存在问题。你必须在它之前添加一行..这就是我的_layout.cshtml现在的样子。
@(Html.Telerik().ScriptRegistrar()
.OnDocumentReady(@<text></text>) //Telerik: This is required because there is still no Telerik components on the page and jQuery(document).ready will not be rendered and the globalization will not work
.Globalization(true)
答案 1 :(得分:1)
您的应用程序的全球化/本地化可能存在问题。 不同的文化混在一起。
发布浮点值时遇到了同样的问题,并通过将此方法添加到Global.asax.cs解决了这个问题:
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en");
}