现在我将对象调用_Layout菜单,其中PartialView
如下:
控制器:
public async Task<ActionResult> GetChemicalsList()
{
var model = db.ProductsList.Where(x => x.Subcategory.Name == "Chemicals").ToList();
return PartialView(@"~/Views/Product/_ChemicalPartialView.cshtml", model);
}
部分视图:
@model IEnumerable<Product>
@foreach (var item in Model)
{
<a href="@Url.Action("Index", "Product", new { id= item.ProductId})">@Html.DisplayFor(modelItem => item.Name)</a>
}
布局视图:
<div class="col-xs-6 col-sm-2">
@Html.Action("GetChemicalsList", "Product")
</div>
但我有另外的产品有不同的子类别要添加,所以我需要为每个产品做一个控制器和不同的调用,因为每个产品在控制器上都有不同的查询:例如,我为配件做另一个,所以我的控制器就像这样:
配件控制器:
public async Task<ActionResult> GetAccesoriesList()
{
var model = db.ProductsList.Where(x => x.Subcategory.Name == "Accesories").ToList(); // diferent Query
return PartialView(@"~/Views/Product/_ChemicalPartialView.cshtml", model);
}
_Layout View
<div class="col-xs-6 col-sm-2">
@Html.Action("GetAccesoriesList", "Product")
</div>
这是正确的方法,还是有其他最好的方法?
提前致谢!
答案 0 :(得分:1)
您可以创建一个通用操作,根据您想要的子类别返回列表。然后将它作为路径数据从视图传递给控制器。
<强>控制器:强>
public async Task<ActionResult> GetSubCategoryList(string subCategory)
{
var model = db.ProductsList.Where(x => x.Subcategory.Name == subCategory).ToList();
return PartialView(@"~/Views/Product/_ChemicalPartialView.cshtml", model);
}
查看:强>
@Html.Action("GetSubCategoryList", "Product", new { subCategory = "Accessories" })
您可能需要更改路线配置以匹配此路线。