簡體   English   中英

如何在PartialView中創建模型的foreach循環? (MVC.NET)

[英]How to create foreach loop of a Model in a PartialView? (MVC.NET)

初學者的問題:在我的數據庫上有2個表:產品,類別。 我創建了一個產品視圖。 我有一個側邊欄菜單作為局部視圖。

PartialView Name: _SidebarMenu
Layout Name:      _AdminLayout

我想在_SidebarMenu中動態列出我的類別。 所以我在_SidebarMenu中嘗試了這個:

@model IEnumerable<ProjectName.MVCWebUI.Models.Categories>

@foreach (var item in Model)
     {
        <li><a href="#">@item.CategoryName</a></li>
     }

但我收到服務器錯誤:

傳遞到字典中的模型項的類型為'System.Collections.Generic.List`1 [ProjectName.MVCWebUI.Models.Products]',但是此字典需要模型項的類型為'ProjectName.MVCWebUI.Areas.Admin.Models .AdminMenuContent”。

如何在渲染視圖中列出其他模型而不是模型?

我建議使用子操作,因為實際上不可能確保將正確的模型傳遞給每個單獨視圖中的部分對象。 基本上,在您選擇的控制器中,添加一個類似以下的動作:

[ChildActionOnly]
public ActionResult SidebarMenu()
{
    // get categories from DB or whatever
    return PartialView("_SidebarMenu", categories);
}

然后,在您的布局中,將以下內容添加到希望此菜單出現的位置:

@Html.Action("SidebarMenu", "Foo")

其中“ Foo”是您放置此操作的控制器的名稱。

假設您有一個ViewModel像:

public class IndexViewModel()
{
    public List<Product> Products { get; set; }
    public List<Category> Categories { get; set; }
}

主視圖將具有:

@model IndexViewModel

部分將具有:

@model List<Category>

因此,從您的主視圖中,您可以渲染部分內容並傳遞正確的列表,例如:

@Html.Partial("~/Areas/....your_partial_name.cshtml", Model.Categories)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM