ASP.Net MVC路由问题。再次

时间:2009-08-14 11:48:37

标签: asp.net-mvc

我不知道我是不是只是愚蠢(不回答!)或者我正在与MVC路由作斗争,但我还有其他问题。

在我的控制器中,我执行一个RedirectToRoute(“ErrorRoute”),它呈现一个具有MasterPage的404视图。

在MasterPage中我有一个顶部导航,其中包含/ homepage和/ news等链接,但当我在404查看时,导航是/ error / homepage和/ error / news。

我已经从这个

改变了我在Global.asax中的路线
routes.MapRoute(
             "ErrorRoute",                      // Route name
             "Error/Error404",                // URL with parameters
             new { controller = "Error", action = "Error404" }

             );

到这个

routes.MapRoute(
             "ErrorRoute",                       // Route name
             "Error/Error404",                  // URL with parameters
             new { controller = "Error", action = "Error404" }
             , new { action = "Error404" }
             );

看看是否有帮助但是当我调用RedirectToRoute时,我得到“路由表中没有路由..”错误

你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

你的链接ActionLinks?

使用此:

Html.RouteLink("Link Title", new { controller="Home" action="Action" });

修改

哦,添加新路线:

routes.MapRoute(
             "homePage",                      // Route name
             "homePage/",                // URL with parameters
             new { controller = "Home", action = "HomePage" }
             );

重复新闻

另一个编辑

再次阅读评论后,如果您的菜单在每个页面上,那么您应该创建一个基本控制器:

public class MyBaseController : Controller
{
    return ViewData["menu"] = List<MenuClass>;
}

然后你的所有控制器(主页,错误)都继承了这个:

public class HomeController : MyBaseController

然后在您的母版页中,循环浏览ViewData [“menu”]:

<% foreach (MenuClass in ViewData["menu"]) { %>
<li>
    <%=Html.RouteLink(MenuClass.LinkTitle, new { controller = "Home", action = MenuClass.Action }) %>
</li>
<% } %>

注意:这是从头开始的,所以可能有错误,但这是我在上一个MVC项目中所做的。

答案 1 :(得分:0)

如何定义MasterPage中的链接?如果他们链接到“新闻”,您应该使用'/ news'和'/ homepage',否则它会将其附加到当前网址(在您的情况下,/错误)。