2011-03-16 35 views
1

カレンダーコントロール内で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" ... />あなたはいけないので、もはやASP.NET MVCには存在しない概念ですViewStateのとポストバックに依存しているサーバーコントロールであります任意のサーバーコントロールを使用してください。ポストバックやビューコールバックがないため、関数はトリガされません。また、フォームから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> 

、その後、あなたがあなたのページに含まjQueryとjQueryのUIのスクリプトを持った後、日付ピッカーを付けることになるで別々のJavaScriptファイルを持つことができ:

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

を、あなたがたときに自動的に提出するフォームを望んでいた場合ユーザーが値を選ぶ:

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

MVCを開始するには良い場所はここにある:

+0

http://asp.net/mvcは、ありがとう、ありがとう。 –

関連する問題