我有这个剃刀观点:
<div class="panel-body">
<div class="form-group row">
<div class="col-sm-6">
@Html.LabelFor(model => model.DrivingLicenceNo, "Licence No", htmlAttributes: new { @class = "control-label" })
@Html.EditorFor(model => model.DrivingLicenceNo, new { htmlAttributes = new { @class = "form-control" } })
</div>
<div class="col-sm-6">
@Html.LabelFor(model => model.DrivingLicenceExpiryDate, "Expiry Date", htmlAttributes: new { @class = "control-label" })
@Html.EditorFor(model => model.DrivingLicenceExpiryDate, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
<div class="form-group row">
<div class="col-sm-6">
@Html.LabelFor(model => model.DrivingLicenceImage, "Licence Image", htmlAttributes: new { @class = "control-label" })
<input type="file" name="uploadFile" />
</div>
<div class="col-sm-6">
@Html.LabelFor(model => model.DateofBirth, "Date of Birth", htmlAttributes: new { @class = "control-label" })
@Html.EditorFor(model => model.DateofBirth, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
</div>
并显示日期,我使用以下脚本:
<script>
$(function() {
$("#DrivingLicenceExpiryDate").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-mmm-yyyy'
});
$("#DateofBirth").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-mmm-yyyy'
});
});
然而,如果不使用脚本,我会在post动作方法模型中填充日期,但是当我重新放入脚本时,模型对象中的日期不会被填充。我需要显示下拉菜单,以便用户更容易选择日期
答案 0 :(得分:1)
我不确定你的dateFormat是否正确。使用您当前指定的格式,它会将"25-088-20162016"
之类的日期设置为输入字段。发布表单时,Model binder将无法将其设置为DateTime属性,因为值(或值的格式)看起来不像正确的日期时间值。
试试这种格式。
$(function() {
$("#DateofBirth").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-mm-yy'
});
});
或者如果您坚信格式是有效的日期格式(对于某些有效的文化),您可以在服务器中设置文化,以便服务器知道如何处理输入值。
添加2个链接以供参考
答案 1 :(得分:1)
Chrome具有原生日期控件,仅支持yyyy-MM-dd
格式的日期。任何其他格式都会导致它在呈现表单时不绑定日期。
假设您使用的是默认模板,则应安装Modernizr,或者应该添加它。然后,做一些像:
if (!Modernizr.inputtypes.date) {
$('.date').datepicker({
/* your options */
});
}
并将date
类添加到您的输入中。
如果您想要一致的呈现(每个浏览器都使用您的datepicker插件),请不要使用EditorFor
帮助程序,而是使用TextBoxFor
帮助程序(以便获得input type="text"
控制)。