我有一个名为Person的控制器,它有一个名为NameSearch的post方法。
此方法返回RedirectToAction(“Index”),或View(“SearchResults”)或View(“Details”)。 我获得所有3种可能性的网址是http://mysite.com/Person/NameSearch。 如何更改此选项以将重定向到“{3}}的重定向到”(“索引”),http://mysite.com/Person/Index用于视图(“SearchResults”)和http://mysite.com/Person/SearchResults重写视图(“详细信息”)。
提前致谢
答案 0 :(得分:1)
我假设您的NameSearch
函数评估查询结果并根据以下内容返回这些结果:
所以,你的控制器看起来会更像:
public class PersonController
{
public ActionResult NameSearch(string name)
{
// Manage query?
if (string.IsNullOrEmpty(name))
return RedirectToAction("Index");
var result = GetResult(name);
var person = result.SingleOrDefault();
if (person == null)
return RedirectToAction("SearchResults", new { name });
return RedirectToAction("Details", new { id = person.Id });
}
public ActionResult SearchResults(string name)
{
var model = // Create model...
return View(model);
}
public ActionResult Details(int id)
{
var model= // Create model...
return View(model);
}
}
因此,您可能需要定义以下路线:
routes.MapRoute(
"SearchResults",
"Person/SearchResults/{name}",
new { controller = "Person", action = "SearchResults" });
routes.MapRoute(
"Details",
"Person/Details/{id}",
new { controller = "Person", action = "Details" });
Index
操作结果将由默认的{controller}/{action}/{id}
路由处理。
这会让你朝着正确的方向前进?