' + val + ''); 索引页面上的链接如下所示: Title 但是,在/En/Arti-6ren">
gpt4 book ai didi

jquery - 使用 ASP.NET MVC Url.Action 在 JQuery 中生成链接

转载 作者:行者123 更新时间:2023-12-01 03:53:10 27 4
gpt4 key购买 nike

我正在生成这样的链接列表:

$('#latestNews').append('<li><a href="<%= Url.Action("Details", "Article") %>/' + key + '">' + val + '</a></li>');

索引页面上的链接如下所示:

<a href="/En/Article/Details/6">Title</a>

但是,在/En/Article/Details/6 页面上 - 生成的链接如下所示:

<a href="/En/Article/Details/6/6">Title</a>

我已经尝试过$('#latestNews').append('<li><a href="<%= Url.Action("Details", "Article") %>?id=' + key + '">' + val + '</a></li>');它工作正常,但缓存不起作用。

我的 Controller 代码:

[OutputCache(Duration = Int32.MaxValue, VaryByParam = "id,language", SqlDependency = "database:Articles")] //Articles will be added rarely so i think it'll be nice to cache them
public ActionResult Details(string id, string language)
{..}

我的路线:

routes.MapRoute(
"Default",
"{language}/{controller}/{action}/{id}",
new { language = "En", controller = "Home", action = "Index", id = UrlParameter.Optional }
);

那么如何更好的生成Url呢?

更新:

 $.post('<%= Url.Action("GetLatest", "News") %>', function (data) {               
$.each(data, function (key, val) {
$('#latestNews').append('<li><%= Url.ActionLink(val, "Details", "Article", new { id = key }, null) %></li>');
});
$('#news').show();
}, "json");

最佳答案

您的 key 和 val 变量位于 JavaScript 中,因此无法与 Url Helper 一起使用。您可以将脚本更改为如下所示:

编辑:修复了错误 - 将 {id = null} 更改为 { id = String.Empty }

 $.post('<%= Url.Action("GetLatest", "News") %>', function (data) {               
$.each(data, function (key, val) {
$('#latestNews').append('<li><a href="<%= Url.Action("Details", "Article", new { id = String.Empty}) %>/' + key +'">' + val + '</a></li>');
});
$('#news').show();
}, "json");

所以,MVC Url.Action() 方法只是为您提供 url 的第一部分。然后 jQuery 将在 url 末尾添加 key 并在运行时添加 val 作为 anchor 的文本。

我认为这是最简单的方法,无需过多重构代码。

关于jquery - 使用 ASP.NET MVC Url.Action 在 JQuery 中生成链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5926334/

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