代码之家  ›  专栏  ›  技术社区  ›  codeWheels

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

  •  0
  • codeWheels  · 技术社区  · 7 年前

    我试图将多个局部视图调用到一个控制器中。我有一个旋转木马,将有至少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 回复  |  直到 7 年前
        1
  •  0
  •   Robban    7 年前

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

    @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 文件

    https://www.contentful.com/developers/docs/net/tutorials/aspnet-core/