2016-09-22 70 views
-1

我想從jQueryUI datepicker綁定選定的日期到要在控制器中使用的模型,但其返回null。我能夠檢索選定值時的FormCollection使用綁定選定的日期從jqueryui datepicker到型號

視圖模型

public class EmpViewModel 
{ 
    public int EmpId { get; set; } 

    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public DateTime DateOfBirth { get; set; } 

} 

查看

<div class="col-md-10"> 
    @Html.EditorFor(model => model.DateOfBirth, 
      new { htmlAttributes = new { @class = "form-control datefield" } }) 
</div> 

控制器

public ActionResult Create(EmpViewModel emp) 
{ 
} 

試過下面的文章中的方法,但couldn」讓它工作 http://www.asp.net/mvc/overview/older-versions/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc-part-4

腳本

<script> 
    $(function() { 
     $(".datefield").datepicker(); 
    }) 
</script> 
+0

該教程是五歲什麼你的MVC版本?請粘貼您的'EmpViewModel' – naveen

+0

@naveen - MVC 5,包含viewmodel – user3543878

+0

顯示您爲datepicker連線的jQuery代碼。 – Jecoms

回答

0

有到日期選擇器綁定到視圖模型的多個解決方案,但是這兩個都是常見的:

首先,嘗試EditorFor聲明id屬性和jQuery日期選擇器綁定到它。

@Html.EditorFor(model => model.DateOfBirth, 
      new { htmlAttributes = new { @id = "DateOfBirth", @class = "form-control datefield" } }) 

<script> 
    $(function() { 
     $("#DateOfBirth").datepicker(); 
    }); 
</script> 

其次,儘量HttpPost屬性上的控制器的方法,如果你的模型通過使用表單提交到控制器,並使用ModelState.IsValid必要時。

[HttpPost] 
public ActionResult Create(EmpViewModel emp) 
{ 
    if (ModelState.IsValid) 
    { 
     // do something 
    } 
} 

如果這些解決方案仍然無法工作,改變EditorForTextBoxFor並檢查提交的工作方式使用這兩種形式收集參數和模型綁定方案。

其他事情關心:

  1. 確保您EditorFor封閉內<form>標籤,或嘗試@using (Html.BeginForm("Create", "Controller", FormMethod.Post))並把EditorFor裏面。

  2. 確保datepicker提供的日期格式格式正確System.DateTime,不要依賴JS格式(避免使用toLocaleDateString,如果有的話)。如果您想使用特定的日期格式,請使用momentjs庫。

  3. 確保jQuery已正確加載,在頁面加載後檢查瀏覽器控制檯是否存在jQuery的存在(請參閱TypeError: jQuery is not defined消息是否存在)。

  4. 嘗試將簡單DateTime設置爲可空DateTimepublic DateTime? DateOfBirth { get; set; }並插入一些代碼以檢查空值。

類似的問題,進一步參考:

MVC 4 DatePicker's selected value not getting set to model

Bind Datetime Model value to datepicker and pass them to controller method

+0

通過添加ID實現第一個點綁定01/01/0001的錯誤日期12:00: 00 AM,我該如何「確保datepicker提供的日期格式是以System.DateTime可識別的正確格式」執行此操作? – user3543878

+0

嘗試在客戶端使用'console.log($(「#DateOfBirth」).val())'或類似的方式來獲取'EditorFor'給出的日期時間輸出值。您可以在傳遞給模型時檢查控制檯輸出是否適合作爲正確的DateTime格式。 –

+0

使用moment.js(http://momentjs.com/) – garethb

相關問題