Я создаю список ссылок следующим образом:
$('#latestNews').append('<li><a href="<%= Url.Action("Details", "Article") %>/' + key + '">' + val + '</a></li>');
А на странице указателя ссылка выглядит так:
<a href="/En/Article/Details/6">Title</a>
Но на / En / Article /Подробно / 6 страница - сгенерированная ссылка выглядит так:
<a href="/En/Article/Details/6/6">Title</a>
Я пробовал $('#latestNews').append('<li><a href="<%= Url.Action("Details", "Article") %>?id=' + key + '">' + val + '</a></li>');
Работает нормально, но не работает кэширование.
Код моего контроллера:
[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");