2009-12-09 3 views
0

Я использую ASP.NET ADN есть следующий код на мой взгляд:Получить значения форм из HTTP-get?

<% using(Html.BeginForm("Search", "Home", FormMethod.Get)) { %> 

<%= Html.TextBox("searchText") %> 
<input type="submit" value="Search" /> 

<% } %> 

и в мой контроллер у меня есть:

public ActionResult Search(string searchText) 
    { 
     return View("Index"); 
    } 

Если у меня есть точки останова в Search-действия и рассмотрите аргумент searchText, это всегда "", даже если я наберу текст в texbox. Если я изменил метод form на POST, он работает так, как ожидалось.

Как я могу прочитать «searchText» при использовании http-GET?

Edit:

Я имел следующий маршрут

 routes.MapRoute(
      "Search",            // Route name 
      "Search/{searchText}",       // URL with parameters 
      new { controller = "Home", action = "Search", searchText ="" } // Parameter defaults 
     ); 

и когда я извлекал значение по умолчанию SearchText (searchValue = ""), то я получил правильное значение в моей деятельности. Зачем?

+0

У вас есть некоторая настройка маршрутизации без привязки в global.asax? Также проверьте источник сгенерированной страницы в вашем браузере. – PanJanek

+0

Я создал следующий маршрут: routes.MapRoute ( "Поиск", // название маршрута "Поиск/{SearchText}", // URL с параметрами новый {контроллер = "Home", действие = " Поиск ", searchText =" "} // Параметры по умолчанию ); –

ответ

2

Используйте Firebug или Fiddler, чтобы посмотреть фактический URI. У вас есть «searchText» часть вашего маршрута, и я уверен, что у вас есть параметр строки запроса «searchText».

Чтобы сделать поиск в части фрагмента кода URI, вам нужно будет использовать JavaScript для перезаписи URI для формы, поскольку формы HTML не знают о вашей маршрутизации MVC. С другой стороны, HTML-формы выполняют параметры строки запроса «из коробки», а MVC связывает их с аргументами действий, даже не включая их в маршрут.

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

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