我的日期时间选择器与我的View-Model上的DateTime属性绑定。当我从日期时间选择器中选择日期时,它将值绑定到模型,但是当我尝试通过j equery设置值时,该值始终为null。
我的模型是:
public class viewmodel
{
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public datetime DDate { get; set; }
}
,视图代码为
<div class="col-md-3">
@Html.TextBoxFor(m => m.DDate, new {@class = "form-control datepicker" })
@Html.ValidationMessageFor(model => model.DDate, "", new { @class = "text-danger" })</div>
JavaScript代码是
$("#DDate").datepicker({ dateFormat: 'dd/mm/yy' });
因此,当我单击选项按钮时,它设置了DateTime Picker的日期
$(':input[id="rbVatVoluntary"]').click(function () {
var thDate = $("#DDate");
thDate.attr("disabled", 'disabled');
thDate.datepicker('setDate', new Date());});
当我在浏览器中检查控制台时,我会看到该值正确设置了,但是当我发布表单并检查模型属性时,它为null。
我感谢有关此
disabled
html属性防止在邮政请求期间要提交的输入值(被视为null值),如此说明:
禁用元素通常用灰色的文本绘制。如果元素是 禁用,它不响应用户操作,无法集中精力, 命令事件不会开火。在形式元素的情况下, 不会提交。
如果要保留邮政期间要提交的值但可以防止用户更改其内容,请改用HTML readonly
属性:
$(':input[id="rbVatVoluntary"]').click(function () {
var thDate = $("#Date");
thDate.attr("readonly", "readonly");
thDate.datepicker('setDate', new Date());
});
您还需要将属性名称匹配以在辅助方法中分配一个:
@Html.TextBoxFor(m => m.Date, new { @class = "form-control datepicker" })