【发布时间】:2016-10-18 07:04:56
【问题描述】:
在视图中,有一个 DisplayFor 与模型中的 DateTime 字段相关联。要更新该字段,AJAX 调用会返回一个日期。我可以将 AJAX 日期转换为 MM/DD/YYYY 值,但使用 .val 设置 DisplayFor 不会更新视图。 Chrome 开发者工具没有显示错误,实际上显示了正确的转换日期时间,但 DisplayFor 没有更新。我没有尝试更改 .attr 而不是 .val 因为看起来 .val 将是正确的选择。谁能看到为什么视图没有更新?提前致谢!
模型声明:
DateTime? SaleDate { get; set; }
在视图中显示:
@Html.LabelFor(m => m.SaleDate, "Sale Date")
@Html.DisplayFor(m => m.SaleDate, "{0:d}", new { @class = "form-control" })
在成功的 AJAX 调用中更新脚本:
success: function (data) {
var $sDate = $("#SaleDate");
var pattern = /Date\(([^)]+)\)/;
var results = pattern.exec(data[0].SaleDate);
var dt = new Date(parseFloat(results[1]));
$sDate.val(dt); //dt is correct Date, but DisplayFor isn't updating!
}
编辑
页面来源表明id正确,但是没有输入。我认为这是因为 DisplayFor 与 TextBoxFor,但明显没有 id 可能是问题所在吗?
<label for="SaleDate">Sale Date</label>
6/1/2016 12:00:00 AM//no input section, just the DateTime value
或者,如果 SaleDate 为空:
<label for="SaleDate">Sale Date</label>
//no value or input section
【问题讨论】:
-
这是 ruby on rails 吗?
-
不,在模型和控制器端是 C#,在视图端是 Bootstrap。
-
在浏览器中检查您生成的 HTML 代码,确保您的
DisplayFor输入具有 idSaleDate -
@AlexKudryashev - 本身没有输入部分,但 for 的标签表示没有输入部分或 ID。感谢您的回复,我将编辑问题以包含此信息。
-
你的 JS
$("#SaleDate")需要一个带有id="SaleDate"的元素。$sDate.val(dt)期望该元素是输入类型(input、select、textarea)。 JS 现在有了关于 Razor 标记的想法。<label for="..."...可以指向任何存在或不存在的东西。
标签: javascript jquery ajax datetime asp.net-mvc-5