我试图将多个部分视图调用到一个控制器中。我有一个旋转木马,至少有3张幻灯片将由CMS管理。我希望能够为每个幻灯片做一个局部视图,并将它们全部调用到带有数组的家庭控制器中。我知道我的视图需要foreach循环,但是我是否需要为每个部分视图设置单独的模型,或者一个模型是否有效?我确实看过这个问题和答案,但我认为它与我正在寻找的有点不同(ASP.NET MVC - How to pass an Array to the view?)我首先包含了部分视图。视图,模型和控制器代码。我提前道歉代码是一团糟。任何帮助,将不胜感激。谢谢。
Partial View - @{
ViewData["Title"] = "_CorporateEvents";
}
<div>
@foreach (var image in Model)
{
<img width="850" height="700">
<img source src="@image.EventImages.File.Url" type="image"
alt="Your browser does not support the image tag." />
}
View--<!-- Wrapper for slides -->
<div class="carousel-inner">
<div class="item active">
</div>
<div class="item">
@Html.Partial("~/Views/Shared/_CorporateEvents.cshtml");
</div>
Model---namespace MyLink.Models
{
public class CorporateEvents
{
[JsonProperty("eventImages")]
public Asset EventImages { get; set; }
}
}
Controller ----public async Task<IActionResult> Index()
{
var qb = QueryBuilder<CorporateEvents>.New.ContentTypeIs("corporateEvents");
var entries = await _client.GetEntriesAsync(qb);
return View(entries);
}
}
}
答案 0 :(得分:0)
因此,简而言之,您不需要为局部视图使用单独的模型。你可以简单地将模型传递给每个部分:
['192.168.0.15', '23.195.155.202', '0']
然而,在你的例子中,有些事情让我感到奇怪。
您的控制器从内容中抓取一些条目,每个条目只包含一个
@Html.Partial("~/Views/Shared/_CorporateEvents.cshtml", modelGoesHere);
。这些应该是旋转木马中的物品吗?
如果是这样,我会创建一个如下所示的视图:
Asset
和部分视图如下:
<div class="carousel-inner">
@foreach(var slide in Model) {
@Html.Partial("~/Views/Shared/_CorporateEvents.cshtml", slide);
}
</div>
我还建议使用<div class="item">
<img source src="@image.EventImages.File.Url" type="image"
alt="Your browser does not support the image tag." />
</div>
taghelper而不是img标记来利用内容丰富的图片API。然后,您可以通过以下方式替换部分视图:
<contentful-image>
只需将<div class="item">
<contentful-image url="@image.EventImages.File.Url" width="850" height="700"
alt="Your browser does not support the image tag." />
</div>
添加到您的@addTagHelper *, Contentful.AspNetCore
文件中即可。
您可以在此处详细了解contentful-image taghelper以及其他可用选项:https://www.contentful.com/developers/docs/net/tutorials/aspnet-core/