当前位置: 首页 > 面试题库 >

传递给MVC Action的JSON Date参数始终为null

霍建章
2023-03-14
问题内容

我有一系列通过jQuery Ajax传递给MVC JsonResult操作的参数。在大多数情况下,它们成功到达,但是有一个Date值根本没有到达。

为了使此日期成功到达,我需要使用什么考虑因素/格式?或者我需要采取什么方法?

...other code ...
myStory.Deadline = new Date($('#story-deadline').val());

$.ajax({
    url: '/Project/' + action[2] + '/AddStory',
    data: { Summary: myStory.Summary, Size: myStory.Size, Priority: myStory.Priority,
            Owner: myStory.Owner, Deadline: myStory.Deadline },
    dataType: 'json',
    traditional: true,
    type: 'POST',
...the rest of the code...

JsonResult操作:

[HttpPost]
public JsonResult AddStory(int projectid, Story story)
{
...some code that doesn't have a DateTime object to work with...

问题答案:

Microsoft使用JavaScriptSerializer对ASP.NET
MVC数据进行序列化/反序列化。如果使用/Date(utcDate)/格式作为Date数据类型。尝试使用

'"\\/Date(' + myStory.Deadline.getTime() + ')\\/"'

要么

var d = myStory.Deadline;
var dateForMS = '"\\/Date(' +
        Date.UTC (d.getUTCFullYear(), d.getUTCMonth(),
                  d.getUTCDate(), d.getUTCHours(),
                  d.getUTCMinutes(), d.getUTCSeconds(),
                  d.getUTCMilliseconds()) + ')\\/"'

您也可以只使用Sys.Serialization.JavaScriptSerializerfrom
MicrosoftAjax.js进行序列化Deadline或任何其他Date类型。

更新 :也许你应该用'\/Date('')\/'代替'"\\/Date('')\\/"'。一切取决于您将在何处插入字符串。

更新2 :现在我拥有了!ASP.NET
MVC主要用于每个Ajax的发布表单字段。在服务器端,将仅使用Parse每种类型的方法将发布的参数转换为该类型。因此,可以使用DateTime.Parse支持的任何字符串格式。例如,您可以使用ISO 8601格式,例如“
2010-08-29T13:15:00.0000000Z”。为此,可以在现代浏览器(firefox,chrome)中使用toISOString()功能。为了更加独立,可以实现数据转换,如http://williamsportwebdeveloper.com/cgi/wp/?p=503中所述:

var d = new Date($('#story-deadline').val())
//var d = new Date(); // get the date. Here we use just Now.
var dAsISOString;
if ($.isFunction(d.toISOString)) {
    //alert("internal toISOString are used!");
    dAsISOString = d.toISOString();
}
else {
    dAsISOString = d.getUTCFullYear() + '-' + padzero(d.getUTCMonth() + 1) + '-' +
                   padzero(d.getUTCDate()) + 'T' + padzero(d.getUTCHours()) + ':' +
                   padzero(d.getUTCMinutes()) + ':' + padzero(d.getUTCSeconds())+'.'+
                   pad2zeros(d.getUTCMilliseconds()) + 'Z';
}
var myStory = { Summary: 'Test description', Size: 8, Dedline: dAsISOString };
$.ajax({
    url: '/Project/1/AddStory',
    data: { Summary: myStory.Summary, Size: myStory.Size, Dedline: myStory.Dedline },
    dataType: 'json',
    // ...
});


 类似资料:
  • 有时对一个类的某些方面进行 参数化(parameterize)是很有用的。例如, 你可能需要管理不同版本的 gem 软件包,既可以为每一种版本创建分离的单独的类, 也可以使用继承和覆盖,为一个类传递一个版本号作为参数。 操作步骤 声明参数作为如下类定义的一部分: class eventmachine( $version ) { package { "eventmachine": pro

  • 问题内容: 我已经熟悉Android框架和Java,并希望创建一个通用的“ NetworkHelper”类,该类可以处理大多数联网代码,使我能够从中调用网页。 我遵循了来自developer.android.com的这篇文章来创建我的网络类:http : //developer.android.com/training/basics/network- ops/connecting.html 码:

  • 问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对

  • 我在解一个有很多常数的非线性方程 我创建了一个用于解决以下问题的函数: 然后我想做: 但是正在解包并向函数传递太多参数,因此我得到: TypeError:terminalV()正好接受2个参数(给定6个) 那么,我的问题是,我是否可以通过某种方式将元组传递给调用的函数?

  • 我有一个简单的 Servlet 应用程序的安全部分,我需要将参数传递给我的应用程序的安全部分。 流量: 第三方需要使用我的登录机制(简单的安全servlet) 用户尝试转到: mycompany.com/loginApp/login?pref=1 “/login”url是安全的,因此应用程序服务器告诉浏览器重定向到我的登录名.jsp,但此时URL更新为:mycompany.com/loginApp

  • 问题内容: 该文档讨论了使用numba的作为的参数。我需要带有附加参数的相同内容。 我基本上是想做这样的事情: 但是,它不起作用,因为应该是/并且不能将它们转换为。我收到以下错误消息: 我没有找到有关如何从Numba中提取值的任何信息。在C语言中,应该类似于—在Numba中可以做同样的事情吗? 问题答案: 1.通过传递额外的参数 该文件说: 如果用户希望改善集成性能,则可以使用以下签名之一: 该是