所以我想在我的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 }
最后但并非最不重要的是,我还没有研究如何传递这些参数,但我希望一旦我弄清楚为什么这不能正常工作,它就不会有太多的额外工作。
答案 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");