ant*_*n1p 2 c# partial-views razor asp.net-mvc-4 entity-framework-6
我的家庭控制器和我的"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>
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,使用DB中的VM名称填充下拉列表._GetforStatus.用于此的Home Controller部分是这样编写的:
public ActionResult index()
{
_db = new IntegrationDBEntitires();
ViewData.Model = _db.VMs.ToList();
return View();
}
Run Code Online (Sandbox Code Playgroud)
StatusController的编写方式如下:
public PartialViewResult _GetforStatus()
{
_db = new OntegrationDBEntities();
ViewData.Model = _db.Jobs.ToList();
return PartialView();
}
Run Code Online (Sandbox Code Playgroud)
_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")
Run Code Online (Sandbox Code Playgroud)
这在_Layout视图中调用如下:\
@Html.Partial("~/Views/_GetforStatus.cshtml")
Run Code Online (Sandbox Code Playgroud)
我在这里收到错误."传递到字典中的模型项的类型为'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"); }
Run Code Online (Sandbox Code Playgroud)
这将允许您使用自己的模型和单独的请求执行视图.
| 归档时间: |
|
| 查看次数: |
14736 次 |
| 最近记录: |