建立MVC的月,日,年下拉日期时间
问题描述:
我必须从我的视图中的三个下拉列表中构建一个DateTime对象。建立模型绑定对于我现在的MVC知识水平来说有点过于复杂(我通读了一些文章)。除了我没有绑定到的DateTime属性,但可以而是来自视图模型的属性建立我的目标了:建立MVC的月,日,年下拉日期时间
public IEnumerable<SelectListItem> Months
public IEnumerable<SelectListItem> Days
public IEnumerable<SelectListItem> Years
是否可以这样做呢?我也可以用阿贾克斯根据月份和年份设置合适的天数(照顾闰年)。任何示例代码或文章引用赞赏,因为我还是这个东西的初级。谢谢。
答
模型绑定很容易。不要害怕这件事。强大的类型视图保持您的代码清洁,以便将来的可读性和可维护性。微软为像我们这样的人使用这些新功能发布。我们不应该害怕那些!
为什么没有一个属性来保存日期时间值,并使用其他一些库到为最终用户提供了一个很好的日期选择体验? 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);
}
不幸的是,jQuery的日期选择器是不是我可以在这里使用。我特别需要有三个下拉菜单,否则这不会成为问题。谢谢, – mishap 2012-04-17 16:29:01
+1 - 肯定会推荐这个答案。重用已经存在的东西(尤其是像jQuery UI那样已经很好建立和支持的东西),而不是滚动自己的东西。 – JasCav 2012-04-17 16:31:17
@Chuchelo - 我很好奇...为什么你不能使用jQuery datepicker? – JasCav 2012-04-17 16:32:36