У меня есть Ajax.ActionLink в частичном виде следующий образом:Ajax.ActionLink только Ссылки на текущую страницу
<div id="accordion">
@foreach (var m in Model)
{
var targetId = m + "_List";
<h3 id="@(m)" class="thingModelHeader">
@Ajax.ActionLink(m, "AjaxGetThings", "Perf",
new AjaxOptions {
HttpMethod="GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId= targetId,
Url="13412"
})
</h3>
<div id="@targetId" >
@* list will populate here when the link is clicked *@
</div>
}
</div>
У меня есть контроллер с соответствующим способом:
public class PerfController : Controller
{
[Route("AjaxGetThings/{id}", Name = "AjaxGetThings")]
public PartialViewResult AjaxGetThings(string id)
{
IQueryable<Thing> results;
using (var repo = new ReadOnlyRepository<Thing>())
{
things = repo.All()
.Where(p => p.Id == Id)
.OrderBy(p => p.Name)
;
}
return PartialView("CustomPartialView", results);
}
}
У меня есть ScriptBundle для ненавязчивой проверки:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
... и я ссылаться на него в моей странице Макет:
</footer>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jquery-ui")
@Scripts.Render("~/bundles/jqueryval")
@RenderSection("scripts", required: false)
</body>
</html>
Проблема в том, что независимо от того, как я определяю Action, Controller или Url в AjaxOptions, ссылка всегда указывает на текущий URL. Целевой div загружает и обновляет всю «нудную версию страницы», поэтому работает, поскольку часть Ajax идет, но независимо от того, что я делаю, URL никогда не указывает на то, что полезно - как фактический контроллер и действие что я указал.
Как передать идентификатор в этот URL? –
добавьте его как атрибут html, см. Мое редактирование –