在MVC actionlink中明确设置routevalues?

时间:2014-01-07 21:07:43

标签: c# asp.net-mvc-3

我有一个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?

谢谢! 布拉德

1 个答案:

答案 0 :(得分:1)

在你的路线定义中,你需要包含参数,试试这样的东西

routes.MapRoute(
                "HomeEditStep1",
                "EditStep1/{id}",
                new { controller = "Home", action = "EditStep1", id = UrlParameter.Optional }, // Parameter defaults
                    new string[] { "MyProject.Web.Controllers" }
            );

控制器应该从路由默认值中获取,但是你没有给RouteEngine任何方式来构建你的路由,所以它在技术上使用默认路由,我假设你已经删除了(因为我们不能看到你的整个路由“表”)