我有一个控制器和视图工作,调用Web服务,并返回一个结果。目前,它是我的默认控制器,称为Home,它使用索引视图页面。
它正在运作。我可以发布数据,然后在刷新的屏幕上放一些东西。它重新加载相同的视图。
现在,一旦我提交,我得到了一个很好的答复,我想加载一个不同的控制器/视图。
我的路线现在看起来像这样:
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.Index屏幕以显示......
答案 0 :(得分:1)
您的路线映射不正确,请查看: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" });
答案 1 :(得分:-1)
我认为你不需要做任何改变。在您的情况下,您希望加载不同的控制器及其尊重视图,您只需在下面更改
替换此代码return RedirectToAction("Index", "Location");
使用此代码return Redirect("http://www.yoursite.com/Location/Index");
您的更改就像从一个页面重定向到另一个页面,因此您需要将完整路径放在此处
请尝试&回答是否有问题