来自jquery的mvc datetime选取器设置值未绑定到模型

时间:2017-09-15 09:18:04

标签: javascript jquery asp.net-mvc datetime jquerydatetimepicker

我的日期时间选择器绑定到我的视图模型上的datetime属性。 当我从日期时间选择器中选择日期并回发时,它会将值绑定到模型,但是当我尝试通过jequery设置值时,该值始终为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' });

所以当我点击一个选项按钮时,它会设置日期时间选择器的日期

$(':input[id="rbVatVoluntary"]').click(function () {

    var thDate = $("#DDate");
    thDate.attr("disabled", 'disabled');
    thDate.datepicker('setDate', new Date());});

当我在浏览器中检查控制台时,我看到该值设置正确但是当我发布表单并检查模型属性时,它为空。

我感谢您对此提供的任何帮助

1 个答案:

答案 0 :(得分:1)

disabled HTML属性阻止在POST请求期间提交输入值(视为空值),如下所示:

  

禁用的元素通常以灰色文本绘制。如果元素是   禁用,它不响应用户操作,它无法集中,   并且命令事件不会触发。 在表单元素的情况下,它   将不会被提交。

如果您想保留在POST期间提交的值但阻止用户更改其内容,请改用HTML readonly attribute

$(':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" })