MVC визуализировать частичное представление foreach внутри модального всплывающего окна в другом представлении - PullRequest
0 голосов
/ 30 мая 2020
• 1000 1001 *
@model IEnumerable<InternetApp.Models.Cart>
<h2>this is my Partial view</h2>
<h1>@Html.DisplayNameFor(model => model.product.name)</h1>
@foreach (var item in Model)
{


    <h3>
        @Html.DisplayFor(modelItem => item.product.name)
    </h3>
    <h3>
        @Html.DisplayFor(modelItem => item.product.price)
    </h3>

}

, и вот как я визуализирую свое частичное представление внутри модального окна в другом представлении:

        <div class="modal-body ">
            @Html.Partial("_ShowCart",new List<InternetApp.Models.Cart>())
        </div>

почему foreach не отображается и как мне решить эту проблему?

1 Ответ

0 голосов
/ 30 мая 2020

Если у родительского представления такая же модель, передайте свой Model в тег @Html.Partial. В противном случае, если в родительском представлении есть коллекция внутри, передайте его как Model.CartItems, где CartItems - это имя, которое вы дали коллекции.

Пример:

У вас есть страница с корзиной покупок (просмотр). Чтобы показать пользователям их корзину покупок на странице, вы запрашиваете базу данных (или, возможно, локальное хранилище) внутри вашего контроллера и используете модель представления для передачи этих элементов корзины покупок в ваше представление. Однако в вашем представлении также отображается информация об адресах пользователей и другие соответствующие элементы электронной корзины, поэтому вы хотите поместить журнал корзины покупок c на отдельную страницу (частичный вид) - это то место, где вы находитесь сегодня.

// CartViewModel.cs

public class CartViewModel
{
    public IEnumerable<InternetApp.Models.Cart> CartItems { get; set; } // Your collection of cart items.
    // Other things pertaining to the user's cart.
}
// CartController.cs
public ActionResult ViewCart(int userId) 
{
   var viewModel = new ViewCartViewModel {
       CartItems = _database.CartItems.GetAllForUser(userId)
   }

   return View(viewModel); // Passing the model to the view.
}
<div class="modal-body ">
    @Html.Partial("_ShowCart", Model.CartItems) // Because you filled CartItems in the controller, it has items in it.
</div>
...