Маршрутизация Mvc3 значения datepicker - PullRequest
2 голосов
/ 02 февраля 2012

я работаю в asp Mvc3 с Telerik Я добавил новый маршрут в свой Global.asax

            routes.MapRoute(
            "SearchDate",
            "ahmed/{date1}/{date2}",
            new
            {
                controller = "ListeDernierEmplacementConnu",
                action = "Search",
                date1 = UrlParameter.Optional,
                date2 = UrlParameter.Optional
            });

и, на мой взгляд, я бы использовал это (форма выбора даты) для отправки дат контроллеру

    @using (Html.BeginRouteForm("SearchDate", new { date1 ="1-01-2012", date2 ="1-07-2012"}))

   {
            <label for="date1">rechercher entre</label>
            @(Html.Telerik().DatePicker()
                    .Name("date1")
                   .Value(DateTime.Now).Max(DateTime.Now).Min(("01/01/2012"))
            )
            <label for="date2">et</label>
            @(Html.Telerik().DatePicker()
                    .Name("date2")
                   .Value(DateTime.Now).Max(DateTime.Now).Min(("01/01/2012"))
            )

    <button type="submit" class="t-button t-state-default" value="search">Rechercher</button>
   }  

Все отлично работает, я получаю 2 значения datepicker в моем контроллере но я всегда перенаправлен на один и тот же URL localhost / ahmed / 1-01-2012 / 1-07-2012? Grid-page = 1

например в datepicker1 я положил 1/1/2012 datepicker2 2/2/2012

ввиду я получаю то, что хочу: 01.01.2012, 2/2 / 2012

но адрес статический я получаю всегда: localhost / ahmed / 1-01-2012 / 1-07-2012? Grid-page = 1

как динамически изменить эти 2 значения в URL

1 Ответ

1 голос
/ 02 февраля 2012

Вы можете опубликовать свою форму в другом действии контроллера и перенаправить в соответствующее место в этом методе.

Я подготовил для вас пример ниже:

Форма

@using (Html.BeginForm("RedirectToDate", "YourController"))
{
<label for="date1">rechercher entre</label> 
    @(Html.Telerik().DatePicker() 
            .Name("date1") 
            .Value(DateTime.Now).Max(DateTime.Now).Min(("01/01/2012")) 
    ) 
    <label for="date2">et</label> 
    @(Html.Telerik().DatePicker() 
            .Name("date2") 
            .Value(DateTime.Now).Max(DateTime.Now).Min(("01/01/2012")) 
    ) 


<input type="submit" value="Submit" />
}

Контроллер

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult RedirectToDate()
{

    string date1 = Convert.ToDateTime(Request.Form["date1"]).ToString("dd-MM-yyyy");
    string date2 = Convert.ToDateTime(Request.Form["date2"]).ToString("dd-MM-yyyy");

    return Redirect(String.Concat("/ahmed/", date1 "/", date2 "/"));
}
...