ASP.NET MVC 2 - Страница простого поиска - PullRequest
0 голосов
/ 10 августа 2010

Я только что запустил ASP.NET MVC (из WebForms), и я борюсь с некоторыми действительно базовыми понятиями.

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

  public ActionResult Index(int month,
                              int day,
                              int year){

        var visitors = visitorRepoistory.FindVisitorsByDate(month, day, year).ToList();

        return View("Index", visitors);
    }

До этого момента я использовал леса с строго типизированными представлениями, так что все было как-то склеено.

Как бы / должен был выглядеть мой взгляд?Буду ли я использовать actionlink (в конце концов, это запрос на получение, верно?), А не кнопку отправки.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Я немного подумал об этом, прежде чем пытаться придумать ответ. Первоначально меня поразила идея превратить одну строку ввода текста в компоненты месяца, дня и года. В ASP.NET MVC было бы намного проще просто принять строку для даты. Таким образом, ваш код изменится на:

public ActionResult Index(string date) {
   try
   {
      DateTime dtDate = DateTime.Parse(date);
      var visitors = visitorRepoistory.FindVisitorsByDate(dtDate.month, 
                     dtDate.day, dtDate.year).ToList();

      return View("Index", visitors);
   }
   catch (FormatException)
   {
     //String was not a valid date/time
   }
}

Есть ли способы разделить его на 3 дюйма? Я уверен. Но для меня это был бы самый простой / быстрый путь к цели.

Таким образом, в вашем виде ваша форма будет выглядеть примерно так:

<% using(Html.BeginForm("VisitorSearchController", "Index")) { %>
Enter a date: <%= Html.TextBox("date") %>
<input type='submit' value='Search' />
<% } %>

Где "VisitorSearchController" - это имя контроллера, на который вы хотите отправить сообщение. Конечно, «Индекс» - это метод, который вы публикуете. Я бы придерживался кнопки отправки пока вы не пытаетесь получить эквивалент LinkButton на странице. Но вы можете сохранить «красивую» часть после функциональности, верно?

Редактировать: добавлен вид кода к ответу.

0 голосов
/ 10 августа 2010

РЕДАКТИРОВАТЬ после комментария:

Самый простой способ - заставить страницу поиска ввести сообщение (не получить) обратно в какой-либо другой метод, проанализировать дату, а затем перенаправить на действие, которое выуказали.

Если вы хотите сделать это через get, то вы можете использовать некоторые трикерации Javascript для ссылки на то, что они вводят, но я рекомендую первый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...