0

我有日期時間選擇器綁定到我的視圖模型上的日期時間屬性。 當我從日期時間選擇器中選擇日期並回發時,它將值綁定到模型,但是當我嘗試通過jequery設置值時,該值始終爲空。從jQuery的mvc datetime選擇器設置值不綁定到模型

我的模式是:

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());}); 

當我在瀏覽器中檢查控制檯時,發現該值設置正確,但是當我發佈表單並檢查模型屬性時,它爲空。

我明白在此

+0

您已經禁用了控制 - 禁用的控件不回發的值 –

+2

'thDate.attr(「已禁用」,「已禁用」);'不PO期間提交值ST - 使用'thDate.attr(「只讀」,「只讀」);'而是。 –

+0

您的'TextBoxFor'綁定在'DDate'上,而您的模型屬性名稱是'Date' ...這是一個錯字嗎? – AlexB

回答

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()); 
}); 

還需要匹配的屬性名稱分配一個在helper方法:

@Html.TextBoxFor(m => m.Date, new { @class = "form-control datepicker" })