【发布时间】:2014-07-08 04:02:36
【问题描述】:
使用 MVC5 应用程序,我尝试在 _layout 页面中的局部视图中加载模型。这似乎不起作用,因为它与加载在不同视图中的其他模型冲突。
我找到了 ViewBags 的替代方案,但它很混乱,我认为这不是最好的方法。有没有办法在 _layout 页面内的模型中加载局部视图,以便从局部视图加载的模型不会与另一个模型冲突?
更新:
我想要做的是:
在 _layout 页面中。我正在尝试使用 bootstrap 提供的图像轮播与用户交互(因此用户可以更改图像、标题和子标题)。
我创建了一个模型来存储数据,例如标题等:
public class BannerEditor
{
public int ID { get; set; }
[Display(Name="Title")]
[StringLength(150)]
public string title { get; set; }
[Display(Name = "Sub-Title")]
[StringLength(300)]
public string subTitle { get; set; }
[Display(Name = "Image Path")]
public string imgPath { get; set; }
[Display(Name= "Starting Banner")]
public int startBanner { get; set; }
}
然后对于我的部分视图,我编写了一些代码并尝试加载模型。:
@model IEnumerable<webby.Models.BannerEditor>
@foreach (var item in Model)
{
if (item.startBanner == 1)
{
<div class="item active">
<img src=@item.imgPath alt="...">
<div class="carousel-caption">
<h3>@item.title</h3>
<p>@item.subTitle</p>
</div>
</div>
}
else
{
<div class="item">
<img src=@item.imgPath alt="...">
<div class="carousel-caption">
<h3>@item.title</h3>
<p>@item.subTitle</p>
</div>
</div>
}
}
然后在我的 _Layout 页面中,我刚刚添加了 Partial。
<div class="carousel-inner">
@Html.Partial("BannerLoad")
这里是控制器:
public ActionResult BannerLoad()
{
return PartialView(db.BannerEditors.ToList())
}
它给了我一个错误,指出它无法将 Articles 模型加载到我的局部视图中。它需要加载的模型是 BannerEditor。由于我的 _layout 已加载到每个页面中,并且部分视图正在加载模型。局部视图的模型与所有其他加载的模型冲突。模型名称为“Articles”。
有没有办法解决这个问题?
【问题讨论】:
-
这种情况下的控制器和视图是什么样的?你能举个例子吗?
-
我更详细地描述了我想要完成的工作
标签: asp.net-mvc model partial-views