3

我有一个调用 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.Index 屏幕以显示...

4

2 回答 2

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" });
于 2013-04-02T06:28:53.667 回答
-1

我不认为你需要做任何改变。在您的情况下,您想加载不同的控制器及其相关视图,您只需要在下面进行更改

替换此代码return RedirectToAction("Index", "Location");

使用此代码 return Redirect("http://www.yoursite.com/Location/Index");

您的更改就像从一个页面重定向到另一个页面,因此您需要将完整路径放在这里

如果有任何问题,请尝试并回复

于 2014-01-29T06:50:19.773 回答