C# 在MVC actionlink中显式设置RouteValue?

C# 在MVC actionlink中显式设置RouteValue?,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我有一个MVC站点,有一个单独的区域供我的管理部分使用 试图用RouteValues设置ActionLink是有问题的 以下是我对特定页面的全局设置(注意,我必须指定控制器位置,以使其正常工作): 如果我制作一个这样的链接: @Html.ActionLink("Edit", "EditStep1", "Home"); 该链接将我带到该页面。但如果我根据需要添加参数: @Html.ActionLink("Edit", "EditStep1", "Home", new { id = page.P

我有一个MVC站点,有一个单独的区域供我的管理部分使用

试图用RouteValues设置ActionLink是有问题的

以下是我对特定页面的全局设置(注意,我必须指定控制器位置,以使其正常工作):

如果我制作一个这样的链接:

@Html.ActionLink("Edit", "EditStep1", "Home");
该链接将我带到该页面。但如果我根据需要添加参数:

@Html.ActionLink("Edit", "EditStep1", "Home", new {  id = page.PageDetailGuid.ToString() }, new { @class = "btn lightblue" });
然后,它似乎忽略了全局变量并返回此值,出于某种原因指向服务: /服务/账户服务?操作=编辑步骤1和控制器=主页和id=84ac76cd-fcb0-444b-adab-c0c041a81c1a

所以我需要它是/EditStep1/84ac76cd-fcb0-444b-adab-c0c041a81c1a

我确实有routes.IgnoreRoute(“{service}.svc/{*pathInfo}”);在全球范围内也有定义

我的问题是,我是否需要以某种方式在RouteValue中显式设置MyProject.Web.Controller

谢谢!
Brad

在路线定义中,您需要包括参数,尝试一下类似的方法

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

控制器应该从路由默认值中选取,但是您没有给RouteEngine任何方法来构建您的路由,因此从技术上讲它使用默认路由,我假设您已经删除了该路由(因为我们无法看到您的整个路由“表”)

缺少的链接!谢谢很高兴能帮助。。。总是只需要第二双眼睛:)
routes.MapRoute(
                "HomeEditStep1",
                "EditStep1/{id}",
                new { controller = "Home", action = "EditStep1", id = UrlParameter.Optional }, // Parameter defaults
                    new string[] { "MyProject.Web.Controllers" }
            );