私は MVC を初めて使用し、叔母のビジネス用の e コマース アプリケーションに取り組んでいます。カテゴリ別に検索するメニューを表示するための部分ビューを含む製品リスト ページがあります。Html.ActionLinkヘルパーではすべてうまくいきましたが、AJAXに切り替えると、製品が更新されますが、リストビュー全体が更新したいdivに挿入されます(ヘッダーとすべてが含まれています)。私が定義した UpdateTargetId 、またはおそらくレイアウトと関係があると思います(私はCSSの専門家ではありません)。だからここに行きます:
製品コントローラ:
public ViewResult List(string category, int page = 1)
{
JProductListViewModel model = new JProductListViewModel
{
JProducts = repository.JProducts
.Where(p => category == null || p.Category == category)
.OrderBy(p => p.ProductID).Skip((page - 1) * PageSize).Take(PageSize),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = category == null ?
repository.JProducts.Count() :
repository.JProducts.Where(x => x.Category == category).Count()
},
CurrentCategory = category
};
return View(model);
}
メニューの一部:
@foreach (var link in Model)
{
<div class="catmenuitem">
@if (link != null)
{
@Ajax.RouteLink(link, "", new { controller = "Product", action = "List", category = link, page = 1 }, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace,
UpdateTargetId = "List", LoadingElementId = "loading", LoadingElementDuration = 1000 },
new { @class = link == ViewBag.SelectedCategory ? "selected" : null })
}
</div>
}
リストビュー:
<div id="List">
@foreach (var p in Model.JProducts)
{
Html.RenderPartial("ProductSummary", p);
}
</div>
私が得ている結果は、List.cshtmlビュー全体が複製され、「List」divに挿入されています。ある種のばかげた間違いになる気がしますが、見つけられないようです。
ありがとう、クウィンザー5