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:是的,我尝试了一种解决方法,它成功了。我用双点来指代家长,现在它的工作正常。看到我的答案了吗,真奇怪。