Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MVC和DateTime-in-action控制器模型_C#_Jquery_Asp.net Mvc_Datetime - Fatal编程技术网

C#MVC和DateTime-in-action控制器模型

C#MVC和DateTime-in-action控制器模型,c#,jquery,asp.net-mvc,datetime,C#,Jquery,Asp.net Mvc,Datetime,我有此控制器操作: [HttpGet] public ActionResult CreateForm(Models.ReminderModel model) { if (model.FkUserId == null && model.FkRoleId == null) { model.FkUserId = UserSession.Current.UserId; model.ReminderDate = DateTime.UtcNow;

我有此控制器操作:

[HttpGet]
public ActionResult CreateForm(Models.ReminderModel model)
{
    if (model.FkUserId == null && model.FkRoleId == null) {
        model.FkUserId = UserSession.Current.UserId;
        model.ReminderDate = DateTime.UtcNow;
    }

    return View(model);
}
如果没有指定URL参数,该操作将正常运行,但是当我指定一些数据时,除了
提醒日期
之外,所有内容都将设置。例如,请求是使用

model[0][name]:FkUserId
model[0][value]:2
....
model[2][name]:ReminderDate
model[2][value]:2013-03-09T10:33:04.934Z
...
注意:参数是序列化的view jQuery,到目前为止一直工作正常。这是我们第一次尝试将
DateTime
传递回控制器操作

在动作控制器中,
model.FKUserId
将被正确设置,但是
提醒日期
将被设置为
“0001-01-01T00:00:00.000Z”

我错过了什么

**更新**


事实证明,C#无法处理ISO格式的日期时间字符串。它更喜欢UTC的。类似于
2013-03-05T16:23:00.000Z
的内容需要作为
u20130305212358000
(EST)发送。绑定也足够了,但我认为这是最好的解决方案。

您会得到日期
1/1/0001
,因为当MVC找不到要提供的值,或者由于某种原因无法应用可用值时,日期的默认值仍然存在,对于
DateTime
而言,它是
1/1/0001
DateTime.MinValue
。如果使用的是
DateTime?
,则会看到null

最好使用Fiddler或Firebug来检查请求并查看发送的值。它很可能需要调整。您还可以通过表单集合检查当前表单的响应,并自己手动转换值

一些替代方案是MVC模型绑定(尽管有人提到这种方法的缺点)。下面列出了更多信息:


您能进入代码吗?model.rementerDate是否为正确的值,然后再将其发送回视图?否,控制器操作将使用
model.rementerDate=“0001-01-01T00:00:00.000Z”
(从一开始就正确)调用,即使URL参数已显式设置,就像所有其他参数一样。。。正确设置到模型中的。这就像URL参数被忽略一样。我打赌是日期时间格式问题。这是否有帮助:能否显示用于调用此控制器操作的确切查询字符串?在您的问题中,您已经显示了参数,就好像您正在发布此控制器操作一样。但是您的控制器操作被
[HttpGet]
属性修饰,这意味着它只能用GET动词调用。@TTT,那么模型绑定问题在哪里呢(因为这是一个模型绑定问题)?在Post中还是在Get操作中?如果是在Post操作中,那么为什么OP会显示他的Get操作?如果是在Get操作中,我希望看到调用此Get操作的确切查询字符串。执行工作正常。我必须知道这个日期格式有一个问题,C#无法正确解析它(这很奇怪,因为它是由C#生成的值)。显然,我需要将字符串转换为不同的格式,以便控制器能够将其转换回。。。。我实际上正在研究一个解决方案,但如果能有更干净的东西,我将不胜感激:)更新我上面的帖子。一个人制作了一个定制的模型活页夹来处理一些日期情况和本地化。您可以考虑这一点,因为模型绑定器试图获取用户输入并将其绑定到您的属性。谢谢你的支持!