2010-08-10 3 views
0

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

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

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

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

     return View("Index", visitors); 
    } 

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

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

Спасибо.

ответ

0

EDIT после комментария:

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

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

+1

Вы можете создать форму, которая запрашивает запрос, используя атрибут метода. – ZippyV

3

Я подумал об этом некоторое время, прежде чем пытаться придумать ответ. То, что меня выбрало изначально, было концепцией превращения отдельной строки ввода текста в ее компоненты месяца, дня и года. В 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

Спасибо, но можете ли вы зайти в часть обзора немного больше? Подключение моего представления к контроллеру - это то, что меня отключает. Я не знаю, с чего начать. – Mike

+0

Добро пожаловать. Я добавил код представления в исходный ответ. – villecoder

Смежные вопросы