【问题标题】:C# MVC RedirectToAction not working?C# MVC RedirectToAction 不起作用?
【发布时间】:2012-03-19 21:11:27
【问题描述】:

所以我想在我的 MVC 应用程序中创建一个新视图,允许用户输入参数进行搜索。我想将这些参数传递给另一个视图/控制器,并且我希望控制器调用一个名为“搜索”的操作来处理这些参数并返回正确的数据。但是,当我尝试“重定向”时,它给了我一个问题。它说找不到资源,

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 } 

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

【问题讨论】:

  • 与您的问题无关的建议是检查 AttributeRouting。在路线方面让我免于脑瘤。
  • 您能否还包括您的 QuestionController 中存在的 Search 方法的签名?
  • 您是否仔细检查了该文件是否确实存在:~/Views/Question/Search.aspx ?

标签: asp.net-mvc-3


【解决方案1】:

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

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

【讨论】:

  • 好吧,我最终决定最好不要尝试重定向到另一个页面......只是合并页面。但我遇到了更多的问题......不过感谢您的帮助。
【解决方案2】:

如果你在同一个控制器中,那么写:

return RedirectToAction("Search");

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多