Asp.net mvc 4 在ASP.NET MVC4中使用Razor创建到升级控制器的链接

Asp.net mvc 4 在ASP.NET MVC4中使用Razor创建到升级控制器的链接,asp.net-mvc-4,razor-2,Asp.net Mvc 4,Razor 2,这是我用来创建顶级链接的代码: @Html.ActionLink("Edit",Url.Action("Edit","Home", new{row.Application_ID})) // supposed to return /Home/Edit/x (application_id) 相反,它返回: /主/主/编辑/x//当前视图为主/编辑 请帮忙 编辑1: 路由表信息: //This is for Edit routes.MapRoute( "Edit", //

这是我用来创建顶级链接的代码:

@Html.ActionLink("Edit",Url.Action("Edit","Home", new{row.Application_ID})) 
// supposed to return /Home/Edit/x (application_id)
相反,它返回: /主/主/编辑/x//当前视图为主/编辑

请帮忙

编辑1: 路由表信息:

//This is for Edit 
routes.MapRoute(
           "Edit", // Route name
           "Home/Edit/{application_id}", // URL with parameters
           new { controller = "Home", action = "Edit", application_id = UrlParameter.Optional } // Parameter defaults
        );

        // This is the default route, I've modified it to LogOn.
        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Account", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults
        );
您不需要内部@Url.Action,请尝试以下操作:

@Html.ActionLink("Edit", "Edit", "Home", new { application_id  = row.Application_ID }, null);

作为对haim770答案的小版本。如果出于某种原因需要使用Url.Action而不是Html.ActionLink,您可以随时这样编写:

<a href="@Url.Action("Edit", "Home", new { application_id  = row.Application_ID })">Edit</a>

一些开发人员更喜欢这种方式,因为它更类似于普通Html,但结果与Html相同。ActionLink尝试了这种方法,并成功:

<a href="..@Url.Action("Edit",new{application_id})">Edit</a>

现在它以Home/Edit/x的形式返回链接:

谢谢您的回复,尝试了一下,现在它给我的是带有查询字符串中的应用程序id的链接,比如:/Home/Edit?application\u id=x。我希望它是:/Home/Edit/x如果您使用的是默认路由,并且您的编辑操作需要一个名为id:@Html.ActionLinkEdit、Edit、Home、new{id=row.Application_id}、null的参数,那么您可能希望尝试此操作;谢谢,但这也会将链接返回为/Home/Edit?id=x,我不需要任何查询字符串,这就是我尝试在其中使用Url.Action的原因。显示您的路由表和编辑操作的签名。请参阅问题中的编辑1谢谢您的回复,我已经在与@haim770的讨论中尝试过了。它以查询字符串的形式返回应用程序\u id,我想传递一个分数。@Sunny这很奇怪,因为您对它有特殊的路由,这是绝对正常的,应该可以工作。可能是在你的控制器中,动作参数来自大写字母:Application_ID而不是Application_ID?@Andrey Gubal:是的,我尝试了一种解决方法,它成功了。我用双点来指代家长,现在它的工作正常。看到我的答案了吗,真奇怪。