CMS系统将多个局部视图调用到一个控制器中

Calling multiple partial views into one controller for CMS system

我正在尝试将多个局部视图调用到一个控制器中。我有一个至少有 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);
    }
}

}

简而言之,不,您不需要单独的局部视图模型。您可以像这样简单地将模型传递给每个部分:

@Html.Partial("~/Views/Shared/_CorporateEvents.cshtml", modelGoesHere);

但是,您的示例中有几件事让我觉得很奇怪。

您的控制器从 contentful 中抓取了许多条目,每个条目只包含一个 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>

我还建议使用 <contentful-image> taghelper 而不是 img 标签来利用内容丰富的图像 API。然后你可以用这样的东西替换你的局部视图:

<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 添加到您的 _ViewImports 文件。

您可以在此处阅读有关 contentful-image taghelper 以及其他可用选项的更多信息:https://www.contentful.com/developers/docs/net/tutorials/aspnet-core/