我有部分视图 LeftBanner.cshtml ,它应该显示来自DB(图像)的一些数据
LeftBanner.cshtml
@model IEnumerable<WebApplication1.ViewModels.Banner>
<table class="table">
<tr>
<th>Test Banner!</th>
</tr>
@foreach (var banner in Model)
{
<tr>
<td>
@Html.LabelFor(b => banner.ImageDesc);
<img src="@Url.Content(banner.ImagePath)" alt="Image" />
</td>
</tr>
}
</table>
SharedController
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.ViewModels;
namespace WebApplication1.Controllers
{
public class SharedController : Controller
{
public ActionResult LeftBanner()
{
List<Banner> b = new List<Banner>() {
new Banner() {ImageDesc = "Left Banner Description", ImagePath = "~/Images/money.jpg" },
new Banner() {ImageDesc = "Left Banner Description2", ImagePath = "~/Images/money.jpg" }
};
return View(b);
// return View();
}
}
}
_Layout.cshtml
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div>
@RenderPage("~/Views/Shared/LeftBanner.cshtml")
</div>
</body>
</html>
错误
The model item passed into the dictionary is of type 'WebApplication1.ViewModels.EmployeeListViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[WebApplication1.ViewModels.Banner]'.
在Asp.net中,Web表单ascx UserControls可以是独立的,并且可以重复使用。
请帮助我明白,为什么我不能封装我的部分观点? 它不是真正的重用, 如果每次使用它都必须传递给局部视图模型。 它可以是独立的并且在没有传递模型的情况下转到数据库吗?
非常感谢!
答案 0 :(得分:3)
在你的LeftBanner()动作方法返回,像这样,
return PartialView("LeftBanner",b);
然后在您的_Layout.cshtml页面中,将操作 LeftBanner 称为贝娄,
@Html.Action("LeftBanner", "Shared")
希望有所帮助:)