ASP.NET MVC Json.Encode()DateTime编码问题字符串不是日期类型

Aar*_*man 9 json html-helper

System.Web.Helpers.Json.Encode()如果模型包含DateTime属性,我遇到ASP.NET MVC生成的JavaScript问题.

我的型号:

public class MyViewModel
{
    public string MyString { get; set; }
    public DateTime MyDateTime { get; set; }
    public int MyInt { get; set; }
    public string[] MyStringArray { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器:

public ActionResult Index()
{
    var myViewModel = new MyViewModel();
    myViewModel.MyString = "My test string";
    myViewModel.MyInt = 100;
    myViewModel.MyDateTime = DateTime.Now;
    myViewModel.MyStringArray = new string[] { "string 1", "string 2" };

    return View(myViewModel);
}
Run Code Online (Sandbox Code Playgroud)

我的看法:

<script type="text/javascript">

    var myViewModel = @Html.Raw(Json.Encode(Model)) ;

</script>
Run Code Online (Sandbox Code Playgroud)

输出:

<script type="text/javascript">

    var myViewModel = {"MyString":"My test string","MyDateTime":"\/Date(1372280916431)\/","MyInt":100,"MyStringArray":["string 1","string 2"]} ;

</script>
Run Code Online (Sandbox Code Playgroud)

问题在于日期的编码方式.它是一个字符串,而不是Date类型.

我也试过使用Newtonsoft.Json.JsonConvert.SerializeObject(),我仍然得到一个字符串而不是日期类型.

Ufu*_*arı 8

日期类型在JavaScript中没有文字.你必须调用它的构造函数.

var myDate = new Date(@Html.Raw(Json.Encode(Model.MyDateTime)));
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 2

此行为是设计使然。

JSON(与 Javascript 不同)没有日期类型。