簡體   English   中英

如何將視圖和部分視圖返回到ASP.NET MVC 4中的索引布局?

[英]How do I return a View and a Partial View to the Index Layout in ASP.NET MVC 4?

我的家庭控制器和我的“StatusController”都創建了一個DBEntities的新實例。 Home Controller將_db.VMs ViewData.Model返回到_Layout.cshtml視圖,狀態控制器將_db.Jobs ViewDataModel作為局部視圖返回到_GetForStatus.cshtml視圖。 我將VMs ViewData模型稱為_Layout視圖,如下所示:

 @foreach (var m in ViewData.Model)
      {
           <li><a href="#">@m.Name</a></li>
      }

這樣可以正常工作,使用DB中的VM名稱填充下拉列表。 _GetforStatus。 用於此的Home Controller部分是這樣編寫的:

 public ActionResult index()
      {
           _db = new IntegrationDBEntitires();
           ViewData.Model = _db.VMs.ToList();
           return View();
      }

StatusController的編寫方式如下:

 public PartialViewResult _GetforStatus()
      {
           _db = new OntegrationDBEntities();
           ViewData.Model = _db.Jobs.ToList();
           return PartialView();
      }

_GetforStatus視圖的編寫方式如下:

 @model IntegrationWeb.Models.Job
      <div class="progress progress-striped active">
           <div class="progress-bar" style="width: @((Model.IS_Progress / Model.IS_Total)*100)%"></div>
      </div>
 @Html.Action("_GetforStatus", "StatusController")

這在_Layout視圖中調用如下:\\

 @Html.Partial("~/Views/_GetforStatus.cshtml")

我在這里收到錯誤。 “傳遞到字典中的模型項的類型為'System.Collections.Generic.List'1 [IntegrationWeb.models.VM]',但字典需要模型項類型'IntegrationWeb.Models.Job'。看起來好像有將兩個不同的DBEntities拉入布局視圖是一個沖突。
如何將視圖和部分視圖返回到ASP.NET MVC 4中的索引布局?

更新:我只是將Action放在Home Controller中,因為我無法弄清楚為什么它找不到我的Controller“StatusController”。 現在我使用@ {Html.RenderAction(“_ GetforStatus”)得到了一個不同的錯誤;}“傳入字典的模型項是'System.Collections.Generic.List'1 [IntegrationWeb.models.Job]',但是這個字典需要一個'IntegrationWeb.models.Job'類型的模型項。“ 有誰知道這里發生了什么?

部分視圖從父視圖繼承Model,除非您專門傳遞屬性或創建另一個對象以傳遞給它。 它們也處理相同的請求。 因此,在您的示例中,部分視圖的控制器操作甚至沒有被執行。 你需要做的是使用RenderAction。

@{ Html.RenderAction("_GetforStatus","ControllerName"); }

這將允許您使用自己的模型和單獨的請求執行視圖。

代替

@Html.Partial("~/Views/_GetforStatus.cshtml")

干脆做

@Html.Action("_GetForStatus", "MyController")

Html.Partial實際上沒有點擊動作,它只是呈現cshtml文件。

暫無
暫無

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

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