我试图在父视图中调用多个部分。我尝试了多种方法,但无法成功。我认为View中缺少一些东西。请指导我哪里出错了。
注意:我在问题中有部分内容。请建议我。
以下错误:
System.InvalidOperationException:'传递给的模型项 字典的类型为“Aplication.Models.ABC.ClsA'”,但是这个 字典需要类型的模型项 ' System.Collections.Generic.IEnumerable`1 [Aplication.Models.ABC.first]''
模型
public class ClsA
{
public List<first> firsts{ get; set; }
public List<second> seconds{ get; set; }
}
public class first
{
public string Name { get; set; }
public string Address { get; set; }
}
public class second
{
public string Details{ get; set; }
public string Age{ get; set; }
}
控制器
public ActionResult ABC()
{
SDetails sDetails=new SDetails();
var model = new ClsA();
model.firsts = sDetails.Rst();
model.seconds = sDetails.Rs();
return View(model);
}
查看
@model Aplication.Models.ABC.ClsA
@Html.Partial("_PartialA");
@Html.Partial("_PartialB.cshtml")
_PartialA
@model IEnumerable<Aplication.Models.ABC.first>
<table>
<tr>
<th>@Html.DisplayNameFor(m => m.Name)</th>
<th>@Html.DisplayNameFor(m => m.Address)</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Address)
</td>
</tr>
}
</table>
_PartialB
@model IEnumerable<Aplication.Models.ABC.second>
<table>
<tr>
<th>@Html.DisplayNameFor(m => m.Details)</th>
<th>@Html.DisplayNameFor(m => m.Age)</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Details)
</td>
<td>
@Html.DisplayFor(modelItem => item.Age)
</td>
</tr>
}
</table>
答案 0 :(得分:2)
@Html.Partial()
采用第二个参数model
。如果您未将参数传递给@Html.Partial()
,它将自动传递当前视图的模型。
参数
<强>的HtmlHelper 强> 键入:System.Web.Mvc.HtmlHelper 此方法扩展的HTML帮助程序实例。
<强> partialViewName 强> 键入:System.String 要渲染的局部视图的名称。
<强>模型强> 键入:System.Object 部分视图的模型。
您需要从
更新代码@Html.Partial("_PartialA");
@Html.Partial("_PartialB");
要
@Html.Partial("_PartialA", Model.firsts);
@Html.Partial("_PartialB", Model.seconds)
您无需将文件扩展名传递给@Html.Partial
方法
答案 1 :(得分:0)
这是加载局部视图的示例。控制器具有在部分视图中加载数据的操作。
public ActionResult List()
{
var movies = db.Movies;
return PartialView("_list", movies.ToList());
}
在部分_list视图中,您可以使用 -
@model IEnumerable<WebApplication1.Models.Movie>
<div class="row">
<table class="table table-bordered table-hover" id="moviesTable">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.ID)
</th>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.ReleaseDate)
</th>
<th>
@Html.DisplayNameFor(model => model.Genre)
</th>
<th>
@Html.DisplayNameFor(model => model.Price)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.ID)
</td>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.ReleaseDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Genre)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
<div class="btn-group btn-group-xs">
<a href="#" class="btn btn-danger delete-row" data-item="@item.ID"><i class="fa fa-trash-o"></i></a>
<a href="@Url.Action("Edit", new { id = item.ID } )" class="btn btn-info"> <i class="glyphicon glyphicon-pencil"></i> Edit </a>
<a href="@Url.Action("Details", new { id = item.ID } )" class="btn btn-success"> <i class="glyphicon glyphicon-eye-open"></i> View </a>
<a href="@Url.Action("DeleteInline", new { id = item.ID } )" class="btn btn-danger" onclick="return confirm('Are you sure to delete?')"> <i class="glyphicon glyphicon-trash"></i> Delete</a>
</div>
</td>
</tr>
}
</tbody>
</table>
</div>
现在您可以在主视图中渲染局部视图,如下所示 -
<div class="row">
<div class="col-md-12" id="replacetarget">
@{ Html.RenderAction("List", "Movies"); }
</div>
</div>