gpt4 book ai didi

c# - ASP.NET MVC UrlHelper.Action() 没有返回正确的路径

转载 作者:行者123 更新时间:2023-11-30 17:18:13 27 4
gpt4 key购买 nike

我在尝试使用 UrlHelper Action() 方法指向我的 /Home/Index 操作时遇到问题地点。我需要在客户端脚本中动态生成指向 Index 的链接(包括 id 参数),所以我做了显而易见的事情:

var url = '@this.Url.Action("Index", "Home")';
function generateLink ( id ) {
var anchor = "<a href='" + url + "/" + id + "'>Select Me</a>"
return anchor;
}

但是这里生成的 anchor 标签是这样的:

<a href='http://localhost//1013'>Select Me</a>

这显然没有路由到正确的操作。我通过确定 HomeIndex 是我的默认值来假设 Url.Action() 是“聪明的”路由,所以 http://localhosthttp://localhost/Homehttp://localhost/Home/Index 在功能上是相同的,但我需要以某种方式强制它选择完整的 URL 选项。

有没有办法做到这一点,还是我必须自己构建 URL?

编辑:

我没有更改新 MVC3 项目的默认路由:

public static void RegisterRoutes ( RouteCollection routes )
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
} // Parameter defaults
);
}

回答:

我最终采用了@BFree 的答案的细微变化,只是因为如果我可以使用它,我更喜欢 Html.ActionLink() 而不是 Url.Action:

var anchor = '@this.Html.ActionLink("Select Me", "Index", "Home", new { id = "XXX" }, null)';

function generateLink ( id ) {
return anchor.replace("XXX", id);
}

最佳答案

一个 hacky 方法是做这样的事情:

var url = '@this.Url.Action("Index", "Home", new { id = 1})';
function generateLink ( id ) {
var anchor = "<a href='" + url.replace("1",id) + "'>Select Me</a>"
return anchor;
}

关于c# - ASP.NET MVC UrlHelper.Action() 没有返回正确的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5912558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com