[英]ASP.NET MVC model binder not parsing ISO DateTime correctly
我一直在尝试向控制器发布表单:
Id=0&ReportDate=2010-08-09T00%3A00%3A00&SampleText=Save
这就是发送的XHR帖子,我的控制器选择了除ReportDate之外的所有属性,而是将其设置为.NET纪元DateTime。 有任何想法吗?
编辑:如果我设置了另一个变量ReportDateString
,则将字符串发送到控制器并执行DateTime.Parse()
,它可以正常工作。 但是,我真的很想能够直接绑定DateTime,因为这感觉很麻烦。
编辑2:这是我的控制器代码:
public void CreateTest(MyObject myObject) {
myObjectRepository.Update(rootObject);
}
而我的对象:
public class MyObject {
public int Id { get; set; }
public string SampleText{ get; set; }
public DateTime ReportDate { get; set; }
}
如果设置调试,则可以看到模型绑定程序成功绑定了帖子上的所有属性,但DateTime设置为纪元日期除外。
编辑3:表格:
<form id="testform" method="post">
<input type="hidden" name="Id" value="0" />
<input type="hidden" name="ReportDate" value="2010-08-09T00-00-00" />
<input type="text" name="SampleText" value="Test"/>
<button id="saveButton">Save</button>
</form>
使用Javascript:
$('#saveButton')live('click', function(e) {
$.post('CreateTest', $('#testform').serialize())
});
这对我来说很好:
public void Test2(DateTime ReportDate, string SampleText, int Id)
使用网址:
/Home/Test2?Id=0&ReportDate=2010-08-09T00:00:00&SampleText=Save
当我中断代码时,ReportDate就是{09.08.2010 00:00:00}。
编辑-附加代码:
<% using (Html.BeginForm())
{ %>
<%= Html.Hidden("ReportDate", "2010-08-09T00:00:00") %>
<%= Html.TextBox("SampleText", "Save") %>
<%= Html.TextBox("Id", "1") %>
<input type="submit" />
<%} %>
我也尝试了以下相同的结果:
<form id="testForm">
<%= Html.Hidden("ReportDate", "2010-08-09T00:00:00") %>
<%= Html.TextBox("SampleText", "Save") %>
<%= Html.TextBox("Id", "1") %>
<a href="#" id="submitform">Submit!</a>
</form>
<script type="text/javascript">
$("#submitform").click(function () {
$.post("/Home/Test2", $("#testForm").serialize());
});
</script>
和这个:
[HttpPost]
public ActionResult Test2(MyObject myObject) {
return View();
}
其中MyObject是原始问题的副本/粘贴。
并不是那么棘手,您需要将文化设置添加到您的webconfig中。 这应该可以解决您的问题。 在我的情况下是TR,您可以尝试添加您的
<system.web>
<customErrors mode="Off" />
**<globalization enableClientBasedCulture="true" culture="tr-TR" uiCulture="tr-TR" />**
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.