繁体   English   中英

ASP.NET MVC模型绑定程序无法正确解析ISO DateTime

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM