C# MVC4和路由
我有一个调用web服务并返回结果的控制器和视图。目前,它是我的默认控制器,名为Home,它使用索引视图页面 它起作用了。我可以发布数据,然后在刷新的屏幕上显示一些内容。它重新加载相同的视图 现在,一旦我提交了,并且得到了很好的回复,我想加载一个不同的控制器/视图 我现在的路线是这样的:C# MVC4和路由,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我有一个调用web服务并返回结果的控制器和视图。目前,它是我的默认控制器,名为Home,它使用索引视图页面 它起作用了。我可以发布数据,然后在刷新的屏幕上显示一些内容。它重新加载相同的视图 现在,一旦我提交了,并且得到了很好的回复,我想加载一个不同的控制器/视图 我现在的路线是这样的: routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Home", "{lang
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-但是。。。主屏幕只会刷新。我从未看到新的位置视图。我做错了什么?我还没有掌握路线。。。我需要向位置传递一个新对象。要显示索引屏幕…您的路线映射不正确,请检查以下内容:
我认为你不需要做任何改变。在您的情况下,您希望加载不同的控制器及其相关视图,您只需在下面进行更改 替换此代码
返回重定向到操作(“索引”、“位置”)代码>
使用此代码返回重定向(“http://www.yoursite.com/Location/Index");代码>
您的更改就像从一个页面重定向到另一个页面,因此您需要将完整路径放在此处
如果有任何问题,请尝试并回复Rob,我尝试了此操作,但默认的开始屏幕已重新加载。首先,位置控制器中的“返回视图()”正在运行-但是返回了错误的视图…啊,等等。。。我删除了其他路线,这是有效的。汉克斯。
routes.MapRoute(
"Location",
"Location/{lang}",
new { controller = "Location", action = "Index", lang = "English" });