2016-08-23 203 views
0

HomeController>索引操作執行選擇查詢。對於該選擇查詢中的每一行,我需要在我的索引視圖中呈現一個部分視圖。由於這取決於數據庫,我正在從控制器執行這部分代碼。我搜索了很多,但我無法弄清楚如何從控制器渲染PartialView。從控制器呈現部分視圖

  1. 部分視圖是否需要控制器操作?我不知道這一點,但是這是我創建:

    public PartialViewResult ucDropdown(Question question) 
    { 
        ViewBag.Question = question; 
        return PartialView(); 
    } 
    
  2. 在我的主要看法,我怎麼把這個局部視圖?我已(失敗)的嘗試:

    public ActionResult Index(string id = "") 
    { 
        var q = ...... 
        var ctrls = new ControlsController(); 
        ViewBag.Questions = ctrls.ucDropdown(q); 
        return View(); 
    } 
    
  3. 如何訪問這個局部視圖的ViewBag?

回答

2

您不一定需要動作方法來渲染局部視圖。您可以直接在主視圖中調用局部視圖,並直接傳遞對象Question

因此,在您的主視圖中,您可以使用Html.Partial幫助程序方法遍歷問題並調用局部視圖。

@foreach(var item in (List<Question>)ViewBag.Questions) 
{ 
    @Html.Partial("ucDropdown",item) 
} 

假設你有一個局部視圖,在任一~/Views/Shared目錄或~/Views/YourControllerFolderNameViewBag.Question稱爲ucDropdown.cshtmlList<Question>型或IEnumerable<Question>

確保您的局部視圖ucDropdown.cshtml是強類型到Question類型的

@model Question 
<p>@Model.QuestionId</p> 

由於您正在傳遞問題對象目錄真正地查看(強類型的方法),你不需要ViewBag。您可以在局部視圖中簡單訪問Model.AnyPropertyName

相關問題