2012-04-17 69 views
1

我必須從我的視圖中的三個下拉列表中構建一個DateTime對象。建立模型綁定對於我現在的MVC知識水平來說有點過於複雜(我通讀了一些文章)。除了我沒有綁定到的DateTime屬性,但可以而是來自視圖模型的屬性建立我的目標了:建立MVC的月,日,年下拉日期時間

public IEnumerable<SelectListItem> Months 
public IEnumerable<SelectListItem> Days 
public IEnumerable<SelectListItem> Years 

是否可以這樣做呢?我也可以用阿賈克斯根據月份和年份設置合適的天數(照顧閏年)。任何示例代碼或文章引用讚賞,因爲我還是這個東西的初級。謝謝。

回答

1

模型綁定很容易。不要害怕這件事。強大的類型視圖保持您的代碼清潔,以便將來的可讀性和可維護性。微軟爲像我們這樣的人使用這些新功能發佈。我們不應該害怕那些!

爲什麼沒有一個屬性來保存日期時間值,並使用其他一些庫到爲最終用戶提供了一個很好的日期選擇體驗? jQuery UI日曆是您可以想到的一個選項。

http://jqueryui.com/demos/datepicker/

DateTime類型屬性添加到您的視圖模型

public class AlbumViewModel 
{ 
    public int ID { set;get;} 
    public DateTime CreatedDate { set;get;} 
} 

,並在您取得動作的方法,你可以返回該視圖模型的目的是查看。

public ActionResult AddAlbum() 
{ 
    AlbumViewModel objItem=new AlbumViewModel(); 
    return View(objItem); 
} 

對此視圖模型使用強類型視圖並使用jQuery UI calandar獲取日曆。

@model AlbumViewModel 
//include jQuery and jQuery UI 
@using (Html.BeginForm()) 
{ 
    <p>Select Date 
    @Html.TextBoxFor(m=>m.CreatedDate) 
    <input type="submit" value="Save" /> 
    </p> 
} 
<script type="text/javascript"> 
    $(function() { 
     $("#CreatedDate").datepicker(); 
    }); 
    </script> 

,並在您的文章行動

[HttpPost] 
public ActionResult AddAlbum(AlbumViewModel objItem) 
{ 
    //Check the objItem.CreatedDate here. Save it or do whatever you want 
    return View(objItem); 
} 
+0

不幸的是,jQuery的日期選擇器是不是我可以在這裏使用。我特別需要有三個下拉菜單,否則這不會成爲問題。謝謝, – mishap 2012-04-17 16:29:01

+1

+1 - 肯定會推薦這個答案。重用已經存在的東西(尤其是像jQuery UI那樣已經很好建立和支持的東西),而不是滾動自己的東西。 – JasCav 2012-04-17 16:31:17

+1

@Chuchelo - 我很好奇...爲什麼你不能使用jQuery datepicker? – JasCav 2012-04-17 16:32:36

相關問題