有些人可以告诉我为什么当我点击日历控件中的某一天时,名为“MyCalendar_SelectionChanged”的事件处理程序没有被执行?这是ASP.NET MVC2应用程序示例中的简单aspx代码:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<script runat="server">
private void MyCalendar_SelectionChanged (object sender, System.EventArgs e)
{
//lbl1.Text = Calendar1.SelectedDate.ToString();
Console.WriteLine("test");
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<form id="Form1" runat="server">
<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<div>
<asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="MyCalendar_SelectionChanged" />
</div>
</form>
</asp:Content>
答案 0 :(得分:0)
<asp:Calendar runat="server" ... />
是依赖于ViewState和PostBack的服务器控件,这些概念在ASP.NET MVC中不再存在,因此您不应该使用任何服务器控件。由于没有回发和视图回调,因此不会触发您的函数。另外,请确保从表单中删除runat="server"
标记,并使用HTML帮助程序生成表单。
要在ASP.NET MVC中实现日历,您可以签出jQuery UI datepicker。
所以这是你可以继续的方式:
与往常一样,你从MVC中的M(odel)开始,它代表你愿意展示的信息(在你的情况下是一个日期):
public class MyViewModel
{
public DateTime Date { get; set; }
}
然后你到了MVC中的C(ontroller):
public class HomeController: Controller
{
// used to render the view
public ActionResult Index()
{
var model = new MyViewModel
{
Date = DateTime.Now
};
return View(model);
}
// will be called when the form is submitted
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
然后是MVC中的V(iew):
<%@ Page
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<AppName.Models.MyViewModel>"
%>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm()) { %>
<%= Html.EditorFor(x => x.Date) %>
<input type="submit" value="OK" />
<% } %>
</asp:Content>
然后你可以有一个单独的javascript文件,在你的页面包含jquery和jquery UI脚本之后你可以附加datepicker:
$(function() {
$('#Date').datepicker();
});
如果您希望表单在用户选择值时自动提交:
$(function() {
$('#Date').datepicker({
onSelect: function(dateText, inst) {
$('form').trigger('submit');
}
});
});
开始使用MVC的好地方是:http://asp.net/mvc