C # MVC RedirectToAction не работает? - PullRequest
2 голосов
/ 20 марта 2012

Итак, я хочу создать новое представление в моем приложении MVC, которое позволяет пользователю вводить параметры для поиска. Я хочу передать эти параметры другому View / Controller, и я хочу, чтобы контроллер вызвал действие под названием «Search», чтобы обработать эти параметры и вернуть правильные данные. Однако, когда я пытаюсь «Перенаправить», это вызывает у меня проблему. Он говорит, что ресурс не может быть найден,

The view 'Search' or its master was not found or no view engine supports the searched locations.
The following locations were searched:

~/Views/Question/Search.aspx

Это код.

[HttpPost]
           public ActionResult HandleForm()
           {
               SearchQuery search = new SearchQuery();
               if(Request["QuestionID"].Trim()!="")
                search.QuestionID = Convert.ToInt32(Request["QuestionID"].Trim());           



return RedirectToAction("Search", "Question");                 
}

Однако, если я изменю «Поиск» на «Индекс», он загружает нужную мне страницу, потому что он открывает представление на этой странице. Это не вызывает поисковое действие. Почему этот метод возвращает представление, когда каждый прочитанный пример утверждает, что необходимо передать имя действия?

Для тех, кому интересно, это моя информация о маршрутизации global.asax

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

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

Ответы [ 2 ]

0 голосов
/ 15 января 2015

Если вы находитесь в том же контроллере, напишите:

return RedirectToAction("Search");

или если ваше поисковое действие находится в другом контроллере, напишите:

return RedirectToAction("Search","your Controller Name Here");
0 голосов
/ 20 марта 2012

Перейдите в каталог Views/Questions и убедитесь, что существует файл с именем Search.cshtml.Если он также существует, убедитесь, что у этого представления есть соответствующий метод действия, например:

public class QuestionController : Controller
{
     public ActionResult Search()
     {
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...