非常感谢你的时间
我的问题是如何设置日期类型的值输入?
@Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "form-control", @type = "date" } })
它在Run
之后出现<input class="form-control text-box single-line" data-val="true" data-val-date="The field Date must be a date." data-val-required="The Date field is required." id="StartDate" name="StartDate" type="date" value="">
我以这种方式制作了一些代码
$(document).ready(function () {
debugger;
var date = $('#StartDate').val();
var dt = new Date(date);
var day = parseInt(dt.getDate());
var month = parseInt(dt.getMonth() + 1);
var year = parseInt(dt.getFullYear());
if (day < 10) { day = '0' + day }
if (month < 10) { month = '0' + month }
var setDate = year + '-' + month + '-' + day;
$('#StartDate').val(setDate);
});
当程序运行时,我看到调试器屏幕的值是string.empty
var date = "";
我也试图再次删除格式错误的下半部分。
var dt = new Date(date);
但我没有工作。 如果有人知道答案 我真的需要帮助 最后来看看数据,但是 由于格式不同,值不显示。 这种格式(yyyy-MM-dd)
谢谢大家。
答案 0 :(得分:1)
您的脚本是不必要的,因为属性StartDate
是可空的DateTime?
且没有价值(您的html有value=""
),所以var dt = new Date(date);
将返回Invalid date
因为var date = $('#StartDate').val();
返回null
而脚本失败。
在将模型传递给视图之前,您需要在控制器中设置StartDate
的值,例如
var model = new MyModel() { StartDate = DateTime.Today };
return View(model);
将在输入中显示今天的日期。
要显示所需的格式,您可以添加DisplayFormatAttribute
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
public DateTime? StartDate { get; set; }
注意添加DataTypeAttribute
表示您可以省略type="date"
方法中的EditorFor()
,因为方法会添加<{1}}
或者,您可以省略这两个属性并使用
@Html.TextBoxFor(m => m.StartDate, "{0:yyyy-MM-dd}", new { @class = "form-control", type = "date" }})