【发布时间】:2011-01-14 18:54:07
【问题描述】:
我想要干净的 URL 并定义了两条路由:
routes.MapRoute(
"Search",
"Search",
new { controller = "Search", action = "SearchPanel" }
);
routes.MapRoute(
"SearchResults",
"Search/{content}",
new { controller = "Search", action = "Search", content = string.Empty, query = string.Empty, index = 0 }
);
那么我有两个动作:
[HttpPost]
public ActionResult Search(string content, string query)
{
if (string.IsNullOrEmpty(query))
{
return RedirectToAction("Home", "Application");
}
return RedirectToAction("Search", new { content = content, query = query }); ;
}
public ActionResult Search(string content, string query, int? index)
{
if (string.IsNullOrEmpty(query))
{
return RedirectToAction("Home", "Application");
}
switch (content)
{
case "products":
// get products
return View("ResultsProducts");
case "categories":
// get categories
return View("ResultsCategories");
default:
// get all
return View("ResultsAll");
}
}
我的母版页中有一个通用搜索面板,它有一个文本框和一个提交按钮。它发布到/Search。文本框的名称是query。一切都很好。当我点击Search 时,我的第一个操作被执行,但在RedirectToAction() 调用时失败:
路由表中没有路由与提供的值匹配。
我似乎找不到它不起作用的原因。
【问题讨论】:
标签: asp.net-mvc routing redirecttoaction