Ajax.ActionLink с PartialView открывает новую страницу MVC4
Я создаю веб-приложение ASP.NET MVC4(.5). Я прошел много тем о проблеме, попробовал каждую из них, но проблема не исчезла.
У меня есть контроллер, который возвращает PartialView.
[HttpGet]
public ActionResult Subcategories(int id)
{
IOrderedQueryable<Subcategory> subcategories = this.Data.Subcategories
.All()
.Where(sub => sub.Category.Id == id)
.OrderBy(cat => cat.Name);
var request = this.Request.IsAjaxRequest();
IEnumerable<ConciseSubcategoryViewModel> model = Mapper.Map<IEnumerable<ConciseSubcategoryViewModel>>(subcategories);
return this.PartialView("_Subcategories", model);
}
У меня есть этот комплект, включенный в нижней части моей страницы _Layout.
bundles.Add(new ScriptBundle("~/Content/jquery").Include(
"~/Scripts/jquery-1.10.2.js",
"~/Scripts/jquery.validate.js",
"~/Scripts/jquery.unobtrusive-ajax.js",
"~/Scripts/jquery.validate.unobtrusive.js"));
Но когда я создаю Ajax.ActionLink в одном из моих представлений и вызываю его, переменная "request" в контроллере имеет значение "false", причина запроса - DOCUMENT вместо XHR и возвращает частичное представление в новой вкладке браузер.
@Ajax.ActionLink(
Model.Name,
"Subcategories",
"Items",
new { Id = Model.Id },
new AjaxOptions() {
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "subcategories-wrapper"
})
Спасибо за помощь. Я просто не вижу ничего плохого.
1 ответ
Ребята, я не думаю, что проблема здесь, но посмотрите, что произойдет, когда я вернусь к представлению, которое создает ajax:
@model AddItemViewModelBag
@section styles {
<link href="~/Stylesheets/add-item.css" rel="stylesheet" />
}
@{
ViewBag.Title = "Ново изделие";
}
@Html.Partial("_AddItemForm", Model.AddItemBindingModel)
@Html.Partial("_Categories", Model.Categories)
@section scripts{
<script src="~/Scripts/add-item.js"></script>
}
в _Categories
Посмотреть:
@model IEnumerable<ConciseCategoryViewModel>
<div class="category-manager hidden-manager">
<div class="categories-container">
<div class="heading">Изберете категория</div>
<div id="categories-wrapper">
@Html.DisplayForModel()
</div>
</div>
<div class="subcategories-container">
<div id="subcategories-wrapper">
</div>
</div>
</div>
И ConciseCategoryViewModel
@model ConciseCategoryViewModel
<div class="category-option" data-category-id="@Model.Id">
@Ajax.ActionLink(
Model.Name,
"Subcategories",
"Items",
new { Id = Model.Id },
new AjaxOptions() {
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "subcategories-wrapper"
})
</div>
Я думаю, что он все еще может использовать ненавязчивый, включенный в страницу _Layout...