[英]Passing data into PartialView logic
我正在關注一本書中的教程,該教程介紹了使用局部視圖創建類別側菜單。 直到顯示當前選定類別的功能為止,它一直很好。
由於似乎沒有任何邏輯將當前選擇的類別傳遞到局部視圖,因此出現了問題。
布局CSHTML文件用於顯示類別
@{
Html.RenderAction("Menu", "Nav");
}
如您所見,所選類別ID未傳遞
如果您查看NavController,則菜單方法接受選擇類別ID
public PartialViewResult Menu(int selCatID = -1)
{
ViewBag.SelectedCatID = selCatID;
return PartialView(repository.Categories);
}
但是來自layout.html文件的調用似乎正在調用Menu,而沒有參數導致selCatID始終為-1
這是菜單視圖
@foreach (var cat in Model)
{
@Html.RouteLink( cat.CategoryName , new {
controller = "Company", action="List"
, catID=cat.ID, page= 1},
new { @class = cat.ID == ViewBag.SelectedCatID ? "selected" : null }
)
}
似乎沒有任何可見的代碼顯示從主控制器(公司)中選擇的CatID傳遞到NavController的視圖中。
我認為主控制器應該為選定的ID設置viewbag。我做了以下更改,並且可以正常工作,但是我不確定這是否是正確的技術。 我想知道我是否做得正確,還是錯過了什么?
在布局文件中,在以下位置傳遞參數:
Html.RenderAction("Menu", "Nav", new { selCatID = ViewBag.SelCatID });
在主實體控制器(CompanyController)中設置當前選定ID的視圖包
public class CompanyController : Controller
{
.....
public ViewResult List(int catID = -1, int page = 1)
{
CompaniesListViewModel viewModel = new CompaniesListViewModel
{
...........
};
ViewBag.SelectedCatID = catID;
return View(viewModel);
問題是這段代碼
Html.RenderAction("Menu", "Nav", new { selCatID = ViewBag.SelCatID });
我添加了參數,因為它沒有傳遞空值並使它在第一次運行時崩潰。 因此,我將其更改回:Html.RenderAction(“ Menu”,“ Nav”);
為了處理null,我將參數更改為可為null的int
public PartialViewResult Menu(int? selCatID = -1)
{
ViewBag.SelectedCatID = selCatID;
現在一切正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.