MVC4 and Routing
本文关键字:Routing and MVC4 | 更新日期: 2023-09-27 18:06:52
我有一个单独的控制器和视图工作,调用web服务,并返回结果。目前,它是我的默认控制器,名为Home,它使用Index视图页面。
工作。我可以发布数据,然后在刷新后的屏幕上显示一些内容。它会重新加载同一个视图。
现在,一旦我提交,我得到一个很好的回复,我想加载一个不同的控制器/视图
我的路由现在是这样的:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Home",
"{lang}",
new { controller = "Home", action = "Index", lang="English" });
routes.MapRoute(
"Location",
"{lang}",
new { controller = "Location", action = "Index", lang = "English" });
我创建了一个名为Location的控件,它只有这样:
//LocationController
public class LocationController : Controller
{
public ActionResult Index()
{
return View();
}
}
在我的主控制器中,我正在执行逻辑,然后尝试加载新页面。
[HttpPost]
public ActionResult Index(HomeModel model)
{
var proxy = new Proxy();
var r = proxy.GetLocationByAddress(model.SearchString, o.ToString());
if(r==null)
{
ViewBag.Error = "Error during search";
return View(model);
}
ViewBag.Error = string.Format("Found {0} at {1}, {2}", r.StreetName, r.Latitude, r.Longitude);
return RedirectToAction("Index", "Location");
}
但是当我运行它,提交它,通过一步,它击中RedirectToAction -但是…主屏幕只是刷新。我从来没有看到新的Location视图。我哪里做错了?我还没有掌握路线…我需要传递一个新对象给Location。
你的路由映射是不正确的,看看这个:http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-custom-routes-cs
routes.MapRoute(
"Location",
"Location/{lang}",
new { controller = "Location", action = "Index", lang = "English" });
我认为你不需要做任何改变。在你的情况下,你想加载不同的控制器与它的尊重视图,你需要下面只更改
替换此代码return RedirectToAction("Index", "Location");
return Redirect("http://www.yoursite.com/Location/Index");
的你的改变就像从一个页面重定向到另一个页面,所以你需要把你的完整路径放在这里
请尝试&如有问题请回复