Передача дат из представления в контроллер mvc / c # - PullRequest
5 голосов
/ 12 января 2012

У меня есть веб-страница, которая использует фильтр диапазона дат, выбранный диапазон дат передается обратно в контроллер, когда пользователь нажимает ссылку действия «фильтр», и контроллер возвращает представление «индекс» с отфильтрованными данными модели.

View

@Html.ActionLink("Filter", "FilterDateRange", new { from = Url.Encode(Model.FromDate.ToString()), to = Url.Encode(Model.ToDate.ToString()) }, null)

Контроллер

public ActionResult FilterDateRange(string from, string to)
{
    var fromDate = DateTime.Parse(HttpUtility.UrlDecode(from));
    var toDate = DateTime.Parse(HttpUtility.UrlDecode(to));

    //do stuffs

    return View("Index", statsPages);
}

У меня вопрос: есть ли более элегантный способ сделать это? В настоящее время значение даты кодируется по URL в представлении, а затем по URL декодируется в контроллере. Я бы предпочел, чтобы метод в контроллере принимал параметры даты и времени, а не строки, это выглядит немного хакерским.

Спасибо.

1 Ответ

4 голосов
/ 12 января 2012

Почему бы просто не использовать параметры DateTime?

@Html.ActionLink("Filter", "FilterDateRange", new { from = Model.FromDate, to = Model.ToDate }, null)

public ActionResult FilterDateRange(DateTime from, DateTime to)
{
    var fromDate = from;
    var toDate = to;

    //do stuffs

    return View("Index", statsPages);
}

Если вы позволите связующему модели делать свое дело, вам не придется беспокоиться о кодировании, декодировании или разборе.

...