2011-03-16 23 views
1

有人可以告訴我爲什麼當我點擊日曆控件中的一天時,名爲「MyCalendar_SelectionChanged」的事件處理程序沒有得到執行嗎?這是從樣品ASP.NET MVC2應用程序中的簡單的aspx代碼:ASP.NET日曆OnSelectionChanged處理程序沒有被調用

<%@ 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

<asp:Calendar runat="server" ... />是一個依靠的ViewState和回發這是在ASP.NET MVC中不再存在觀念服務器控件,所以你不應該使用任何服務器控件。因爲沒有回傳和查看回調,所以你的功能不會被觸發。另外請確保您從表單中刪除runat="server"標記並使用HTML助手生成表單。

要在ASP.NET MVC中實現日曆,您可以簽出jQuery UI datepicker

因此,這裏是你可能會如何進行:

一如往常你開始與MVC中的M(奧德爾),這將代表你願意來顯示信息(在你的情況的日期):

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的腳本到你的頁面後附上日期選擇器:

$(function() { 
    $('#Date').datepicker(); 
}); 

,如果你想要的形式自動提交當用戶選擇一個值:

$(function() { 
    $('#Date').datepicker({ 
     onSelect: function(dateText, inst) { 
      $('form').trigger('submit'); 
     } 
    }); 
}); 

一個良好的開端與MVC是在這裏:http://asp.net/mvc

+0

謝謝你,謝謝你。 –

相關問題