<asp:Calendar runat="server" ... />
- это серверный элемент управления, основанный на ViewState и PostBack, которые больше не существуют в ASP.NET MVC, поэтому не следует использовать какие-либо серверные элементы управления.Поскольку нет обратных вызовов и обратных вызовов просмотра, ваша функция не будет запущена.Также убедитесь, что вы удалили тег runat="server"
из своей формы и использовали HTML-помощники для создания форм.
Для реализации календаря в ASP.NET MVC вы можете воспользоваться jQuery UI datepicker .
Итак, вот как вы могли бы действовать:
Как всегда, вы начинаете с M (odel) в MVC, который будет представлять информацию, которую вы хотите показать (в вашем случае дату):
public class MyViewModel
{
public DateTime Date { get; set; }
}
Затем вы попадаете в C (контроллер) в MVC:
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);
}
}
Затем V (iew) в MVC:
<%@ 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 на свою страницу:
$(function() {
$('#Date').datepicker();
});
и если вы хотите, чтобы форма автоматически отправлялась, когда пользователь выбирает значение:
$(function() {
$('#Date').datepicker({
onSelect: function(dateText, inst) {
$('form').trigger('submit');
}
});
});
Хорошее место, чтобы начать с MVC здесь: http://asp.net/mvc