簡體   English   中英

MVC部分視圖以顯示列表

[英]MVC Partial view to Display list

我有一個操作結果返回一個列表

public ActionResult GetData(Profiles profiles)
{
    Vertical Vdata = new Vertical();
    List<Ver> Vertical = new List<Ver>();
       //Code to fill list
    return View(Vertical);
}

然后局部顯示列表

@model  IEnumerable< List<VerticalContainer.Models.Vertical>>

@foreach(var item in Model)
{
 <span>@item.name</span>
}

我不確定如何從主視圖渲染部分視圖

@Html.Action("GetData")?? 

Html.Action通過什么? 還是我應該使用Partial / RenderPartial?

1-正確的動作呈現方式如下:

@Html.RenderAction("ACTION_NAME","CONTROLLER_NAME")

根據您的解決方案,使用正確的值替換操作名稱和控制器名稱。

2-對於傳遞的模型,如果在具有ProfilesModel屬性的視圖中渲染此動作,則不必指定要傳遞給該動作的模型,因為它將隱式地從父級讀取模型視圖。

如果不是這種情況,則需要將Profiles值存儲在一個中等變量中(例如,在ViewBag屬性中),然后在調用該操作時將其傳遞,因此它應在此傳遞的模型上起作用而不是起作用在父視圖上。

例如: @Html.RenderAction("ACTION_NAME","CONTROLLER_NAME", YOUR_MODEL_VALUE_HERE)

建議 :如果此局部視圖僅呈現已傳遞的列表,則可以跳過創建提到的操作的過程,而只需進行調用即可呈現部分視圖,並將正確的列表傳遞給該局部視圖以便可以使用。

為了更加清楚,使用您的問題,我可以看到名為GetData的操作只是從傳遞的Profiles模型中構造了名為Vertical的列表,因此您可以在原始操作( IndexDetailsWHAT_EVER_THE_NAME_IS )中構造此列表並將其存儲在ViewBag ,則可以調用RenderParial而不是RenderAction ,這將導致與您提到的方案相同的輸出。

example: @{ Html.Partial("ViewName", YOUR_MODEL_HERE);}
@{Html.RenderAction("actionName","controllerName");}

從主視圖中,您可以簡單地將“ 部分視圖”呈現為:

 @Html.Partial("_PartialViewName", VerticalList);

在這種情況下, VerticalList將是您在控制器操作中填充的VerticalContainer.Models.Vertical類型的列表。

暫無
暫無

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

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