为CMS系统调用多个部分视图到一个控制器

时间:2017-10-16 16:21:22

标签: html asp.net asp.net-mvc content-management-system contentful

我试图将多个部分视图调用到一个控制器中。我有一个旋转木马,至少有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);
    }
}

}

1 个答案:

答案 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/