2012-07-10 45 views
3

我有2个重要的问题。如何在mvc 3 EditorFor中使用datepicker?

1)DateTimePicker在<input type="text" name="date" id="date"/>上运行良好,但没有css效果和颜色。 2)<%Html.EditorFor(m => m.StartDateTime, new { @class = "datepicker" })%>不起作用。没有显示datetimepicker。

如何使jquery datetimepicker。我引用的文章是:http://geekswithblogs.net/michelotti/archive/2010/02/05/mvc-2-editor-template-with-datetime.aspx


<link rel="stylesheet" href="../../Styles/jquery.ui.all.css" type="text/css" /> 
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-1.7.2.min.js") %>"></script> 
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-ui.js") %>"></script> 
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery.ui.datepicker.js") %>"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.datepicker').datepicker({}); 
     $('#date').datepicker({}); 

    }); 
</script> 





<table> 
<tr><td><input type="text" name="date" id="date" /></td></tr> 
<tr><td><%:Html.LabelFor(m=>m.StartDateTime) %></td><td><%:Html.EditorFor(m => m.StartDateTime, new { @class = "datepicker" })%></td></tr> 
</table 

回答

3

程序员,这是我是如何做了一会儿回来。

创建一个名为DateTime.aspx的editorfor模板:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %> 

<%string name = ViewData.TemplateInfo.HtmlFieldPrefix;%> 
<%string id = name.Replace(".", "_");%> 

<div class="editor-label"> 
    <%= Html.LabelFor(model => model) %> 
</div> 
<div class="editor-field"> 
    <%= Html.TextBox("", (Model.HasValue ? Model.Value.ToString("dd-MM-yyyy") : string.Empty), new { @class = "date" }) %> 
    <%= Html.ValidationMessageFor(model => model)%> 
</div>  

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#<%=id%>").datepicker({ 
      dateFormat: 'dd-mm-yy', 
      changeMonth: true, 
      changeYear: true, 
      showOn: 'button', 
      buttonImage: '<%=Url.Content("~/Content/images/calendar.gif") %>' 
     }); 
    }); 
</script> 

然后简单地调用它是这样在你看来:

<%= Html.EditorFor(m => m.StartDate) %> 

欢呼声......

1

尝试使用Html.EditorFor的Html.TextBoxFor代替:

<%:Html.TextBoxFor(m => m.StartDateTime, new { @class = "datepicker" })%> 

对于CSS问题,使用:

<link rel="stylesheet" href="<%= Url.Content("~/Styles/jquery.ui.all.css") %>" type="text/css" /> 
+0

遗憾没工作: ( – programmerist 2012-07-10 12:47:54

3

你的第二个问题,请使用Html.TextBoxFor而不是EditorFor来获取html属性。

Html.TextBoxFor(model => model.Date, new { @class = "datePick", Value = Model.Date.ToString("MM/dd/yyyy") }) 

对于你的第一个问题,你的路径是否正确?我使用Url.Content来获得它