【问题标题】:asp.net mvc 3 access DateTime model property in javascriptasp.net mvc 3 在 javascript 中访问 DateTime 模型属性
【发布时间】:2012-10-03 10:46:54
【问题描述】:

在 Asp.Net MVC 中,我有一个包含 DateTime 类型属性的模型。

如何在 JavaScript 中访问它?

使用@(Model.PrimitiveTypeProperty) 效果很好,但对于DateTime 的属性则不行。

问题更复杂,但我至少需要更改此值。
有可能吗?

【问题讨论】:

  • 您只是想使用 JavaScript 显示日期/时间,还是需要将其作为 javascript Date 对象?

标签: javascript jquery asp.net-mvc asp.net-mvc-3


【解决方案1】:

你可以把它放在一个隐藏的例子中:

 @Html.HiddenFor(model => model.YourDate)

然后从 javascript 访问它。 修改它的值后,在提交时,您应该将值更新回您的控制器。

别忘了输入如下格式:

@using (Html.BeginForm())

【讨论】:

  • 如何修改?我无法从中读取数据。
【解决方案2】:

从您的模型中,您应该拥有 DateTime 属性。

public class YourModel {

   public DateTime YourDateField { get; set; }

}

然后在你的View 你可以这样做:

@Html.LabelFor(m => m.YourDateField);

使用JavaScript/jQuery访问它:

$(document).ready(function() {
   var d = $("#YourDateField").val(); 
   alert(d);

  $("#YourDateField").val = "01/01/2000"; // sets the date which will then be posted back to the model on the form submit. 
});

这将提醒您模型的日期值。

 $("#YourDateField").val = "01/01/2000"; 

更改日期客户端。如果你的视图有一个Form 元素,当它被提交回服务器时,传回的值将反映更改(01/01/2000)。

【讨论】:

    【解决方案3】:

    如果您希望基本上将您的 DateTime 属性转换为 JS Date,您可以尝试以下操作:

    var jsDate = Date.parse('@Model.EndDate.ToUniversalTime().ToString("r")');
    

    【讨论】:

    • 谢谢,这正是我想要的......没有完全像那样工作,但它有助于得到它:var jsDate = new Date(parseInt(@(Model.EndDate.Year)), parseInt(@(Model.EndDate.Month)), parseInt(@(Model.EndDate.Day)));
    • @SandraS。是的,我给出的示例不正确,因为 JS 中的 Date 需要一个纪元时间戳(DateTime.Milliseconds 不会给出)。我已经用比您正在使用的更简洁的内容更新了我的答案。此外,使用您的日期,您将丢失任何与日期相关的时间信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2019-05-17
    • 2020-05-07
    • 2012-03-10
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多