ASP.Net MVC и jQuery DatePicker ViewModel - PullRequest
       11

ASP.Net MVC и jQuery DatePicker ViewModel

1 голос
/ 28 августа 2009

У меня есть DatePicker, работающий с View, с которым также связана ViewModel. Когда я выполняю действие Post для контроллера, снова создается экземпляр ViewModel, и некоторые значения недоступны из View.

Действие контроллера:

    public ActionResult Search()
    {
        ProjectSearchViewModel viewModel = 
            new ProjectSearchViewModel(
                DateTime.Today.AddMonths(-1), 
                DateTime.Today.AddDays(1));

        return View(viewModel);
    }

  [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Search(ProjectSearchViewModel viewModel)
    {
        try
        {
            //Always returns a value from UI
            DateTime startDate = viewModel.StartDate; 
            //NEVER returns a Value from UI
            DateTime endDate = viewModel.EndDate; 

.....

Разметка просмотра:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/TabbedViewMasterPage.master" Inherits="System.Web.Mvc.ViewPage<Reactivity.Web.Models.ProjectSearchViewModel>"%>

...

 <label for="StartDate">
        Start Date:
    </label>
    <% Html.jQuery().DatePicker()
            .Name("StartDate")
            .AllowMonthChange(true)
            .AllowYearChange(true)
            .ShowOn(DatePickerShowOn.Focus)
            .ShowOtherMonths(true)
            .Value(ViewData.Model.StartDate)
            .Render(); %>
    <br />
    <label for="EndDate">
        End Date:
    </label>
    <% Html.jQuery().DatePicker()
            .Name("EndDate")
            .AllowMonthChange(true)
            .AllowYearChange(true)
            .ShowOn(DatePickerShowOn.Focus)
            .ShowOtherMonths(true)
            .Value(ViewData.Model.EndDate)
            .Render(); %>
    <br />
    <input type="submit" value="Search" />

DatePicker (два экземпляра в представлении) работает нормально.

Как убедиться, что поля ViewModel (viewModel.EndDate) возвращены заполненными в действии контроллера? Или это проблема с наличием двух (MVC) DatePickers на форме?

Большое спасибо Brian

1 Ответ

1 голос
/ 28 августа 2009

Хорошо, здесь есть две проблемы:

  1. Я новичок в MVC и т. Д., И я добавил Telerik MVC Extensions в мой проект, который, как вам, jQuery, будет знать, что приведенный выше код - Telerik CTP. Извините за это.

  2. Вопрос в конце был довольно интересным. Приведенный выше код неправильно обрабатывал локализацию дат, так что даты, которые были введены в средство выбора даты с локализацией браузера, установленной на NON-US English, обрабатывались как формат США, так что при выборе 28/07/2009 (правильный формат en-UK ) либо оболочка Telerik для элемента управления datepicker не пропустит его, либо что-то в конвейере отклонит его. В результате никакие даты после 12 числа месяца не возвращались.

Надеюсь, это поможет кому-то еще на этом пути.

Brian

...