C#MVC RedirectToAction无法正常工作?

时间:2012-03-19 21:11:27

标签: asp.net-mvc-3

所以我想在我的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");                 
}

但是,如果我将“搜索”更改为“索引”,则会加载我想要的页面,因为它会打开该页面中的视图。它不会调用搜索操作。当我读过的每个例子都说需要传递Action的名称时,为什么这个方法返回View?

对于那些想知道这是我的global.asax路由信息

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

最后但并非最不重要的是,我还没有研究如何传递这些参数,但我希望一旦我弄清楚为什么这不能正常工作,它就不会有太多的额外工作。

2 个答案:

答案 0 :(得分:0)

转到Views/Questions目录,确保有一个名为Search.cshtml的文件。如果它确实存在,那么请确保该视图具有相应的操作方法,如:

public class QuestionController : Controller
{
     public ActionResult Search()
     {
     }
}

答案 1 :(得分:0)

如果您在同一个控制器中,请写下:

return RedirectToAction("Search");

或者如果您的搜索操作位于其他控制器中,则写入:

return RedirectToAction("Search","your Controller Name Here");