0

複数の部分ビューを1つのコントローラに呼び出そうとしています。私は、少なくとも3つのスライドがCMSによって管理されるカルーセルを持っています。私はそれらのスライドのそれぞれについて部分的なビューを行い、それらを配列でホームコントローラにすべて呼び出せるようにしたいと考えています。私の見解ではforeachループが必要だと知っていますが、私はこれらの部分的なビューのそれぞれに対して別々のモデルが必要ですか?私はこの質問と答えを見ましたが、私はそれが私が探しているものと少し違うと思っています(ASP.NET MVC - How to pass an Array to the view?)私は部分的なビューを最初に含めました。ビュー、モデル、およびコントローラコード。私はコードが混乱する前に謝る。どんな助けもありがとう。ありがとうございました。複数の部分ビューをCMSシステム用の1つのコントローラに呼び出す

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

だから、要するに、いいえ、あなたは、部分的なビューのために別のモデルを必要としません。あなたは、単にこのような各部分にモデルを渡すことができます。

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

しかし、いくつかの事はあなたの例では奇数として私を打ちます。

あなたのコントローラは、内容が豊富なエントリから多数のエントリを取得し、各エントリにはちょうど1つのAssetが含まれています。これらはカルーセルの中のあなたのアイテムとされていますか?

ので、私はこのようになりますビュー作成した場合:

<div class="carousel-inner"> @foreach(var slide in Model) { @Html.Partial("~/Views/Shared/_CorporateEvents.cshtml", slide); } </div>

と部分図このような何か:私も<contentful-image>を使用してお勧めしたい

<div class="item"> <img source src="@image.EventImages.File.Url" type="image" alt="Your browser does not support the image tag." /> </div>

を内容のイメージAPIを活用するためにimgタグの代わりにtaghelperを使用します。ちょうどあなたの_ViewImportsファイルに@addTagHelper *, Contentful.AspNetCoreを追加

<div class="item"> <contentful-image url="@image.EventImages.File.Url" width="850" height="700" alt="Your browser does not support the image tag." /> </div> :あなたは、このようなもので、あなたの部分図を置き換えることができます。

ここでは、内容が豊富な画像タグヘルパーとその他のオプションについて詳しく読むことができます。https://www.contentful.com/developers/docs/net/tutorials/aspnet-core/

関連する問題