我有一个看似简单的日期显示,当切换另一个“Sale Date”DropDownBoxFor时,显示默认的“开始日期”或AJAX结果日期。日期格式应设置为短日期,但显示屏始终以日期和时间格式显示。切换“销售日期”字段后,将检索相应“销售日期”的“开始日期”并显示为RFC1123日期!
型号:
public DateTime StartDate { get; set; }
剃刀:
@Html.TextBoxFor(m => m.StartDate, "{0:d}", new { @readonly = "readonly", @class = "form-control" })
AJAX:
success: function (data) {
var pattern = /Date\(([^)]+)\)/;
var results = pattern.exec(data[0].StartDate);
var dt = new Date(parseFloat(results[1]));
$("#StartDate").val(dt);
将TextBoxFor更改为DisplayFor后,短日期显示正确,但在切换其他字段后不会更新。所以,我在一个范围内包装了DisplayFor并用AJAX中的.val()
替换了.html()
更改,但是格式在切换后恢复为默认的错误日期和时间以及RFC1123!任何人都可以看到这里发生了什么?非常感谢提前!
答案 0 :(得分:0)
我从未弄清楚为什么会发生这种情况,但我的解决方法实现了最终目标:我将TextBoxFor更改为EditorFor,然后在使用切换时,脚本会将html文本更改为生成日期。
剃刀:
<div class="startDate">
@Html.EditorFor(m => m.StartDate, "DateTime", "StartDate", new { @class = "form-control" })
</div>
AJAX:
success: function (data) {
var pattern = /Date\(([^)]+)\)/;
var results = pattern.exec(data[0].StartDate);
var dt = new Date(parseFloat(results[1]));
$(".startDate").text((dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear());