我有一个MVC网站,我的管理部门有一个单独的区域。
尝试使用RouteValues设置ActionLink,这是有问题的。
这是我对特定页面的全局(注意我必须指定控制器位置才能使用这些页面):
routes.MapRoute(
"HomeEditStep1",
"EditStep1",
new { controller = "Home", action = "EditStep1", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "MyProject.Web.Controllers" }
);
如果我制作这样的链接:
@Html.ActionLink("Edit", "EditStep1", "Home");
该链接将我带到该页面。但是如果我根据需要添加params:
@Html.ActionLink("Edit", "EditStep1", "Home", new { id = page.PageDetailGuid.ToString() }, new { @class = "btn lightblue" });
然后它似乎忽略了Global并返回它,由于某种原因指向服务: /服务/动作的AccountService = EditStep1&安培;控制器=家庭和ID = 84ac76cd-fcb0-444b-ADAB-c0c041a81c1a
所以我需要它/ editStep1 / 84ac76cd-fcb0-444b-adab-c0c041a81c1a。
我确实有routes.IgnoreRoute(“{service} .svc / {* pathInfo}”);也在全球范围内定义。
我的问题是,我是否需要在路由值中以某种方式显式设置MyProject.Web.Controllers?
谢谢! 布拉德
答案 0 :(得分:1)
在你的路线定义中,你需要包含参数,试试这样的东西
routes.MapRoute(
"HomeEditStep1",
"EditStep1/{id}",
new { controller = "Home", action = "EditStep1", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "MyProject.Web.Controllers" }
);
控制器应该从路由默认值中获取,但是你没有给RouteEngine任何方式来构建你的路由,所以它在技术上使用默认路由,我假设你已经删除了(因为我们不能看到你的整个路由“表”)