我不知道我是不是只是愚蠢(不回答!)或者我正在与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时,我得到“路由表中没有路由..”错误
你能帮忙吗?
答案 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',否则它会将其附加到当前网址(在您的情况下,/错误)。