【问题标题】:How do I call a partial view with IEnumerable collection in a view如何在视图中使用 IEnumerable 集合调用部分视图
【发布时间】:2015-04-21 23:56:13
【问题描述】:

我想在网页滑块页面中显示一个 Slider 是不完整的

 <div class="slider">
        @Html.Partial("~/Views/slider/slider.cshtml", new IEnumerable<Mvc_baker.Areas.admin.Models.slidShow>)
    </div>

我看到这个错误

编译器错误消息:CS0118:“System.Collections.Generic.IEnumerable”是“类型”,但用作“变量”

我将删除新的 IEnumerable 并将其保留为

@Html.Partial("~/Views/slider/slider.cshtml") in the view

我看到这个错误 异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。 第 6 行:@foreach(模型中的变量项) 第 7 行:{ 第 8 行:

此代码视图滑块

@model  IEnumerable< Mvc_baker.Areas.admin.Models.slidShow>

    @foreach (var item in Model)
    {
            <ul class="amazingslider-slides" style="display:none;">
                <li>
                    @{ 
                       string imageBase64 = Convert.ToBase64String(@item.FImage);
                       string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);
                    }
                    <img src="@imageSrc" class="info" width="100" height="50" />
                </li>
            </ul>
    }

如何解决这个问题

【问题讨论】:

  • 你能从你调用的地方显示视图吗?你需要将模型传递给它
  • iam try replce this code new List() but trace view show The code inside the loop will not run @{ } @foreach (var item in Model ) { }
  • 你需要显示你正在调用的视图@Html.Partial()
  • 很遗憾,我不明白你的解决方案
  • 我是说你在一个视图中写Html.Partial(),你能在你的问题中显示那个视图

标签: asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

我解决了这个问题

  @Html.Action("slidshow", "slider")

 public  ActionResult slidshow()
    {
        return PartialView("~/Views/slider/slidshow.cshtml", GetSliderImages());
    }
  public IList<slidShow> GetSliderImages()
    {
        var q = db.slidShows.OrderByDescending(x => x.ID_SlidShow).Where(x=>x.st==false);
        return q.ToList();
    }

【讨论】:

    【解决方案2】:

    您不能使用new 关键字实例化IEnumerable&lt;T&gt;,因为它是一个接口。您可以实例化一个实现该接口的类,例如
    new List&lt;Mvc_baker.Areas.admin.Models.slidShow&gt;()
    查看MSDN 以更好地了解接口

    【讨论】:

    • iam 替换此代码时不显示错误新列表() 但在模态不为空时返回空模态
    • 我猜你所说的模态是指局部视图将呈现的任何内容。如果是这种情况,那么是的,它将为空,因为集合 new List&lt;Mvc_baker.Areas.admin.Models.slidShow&gt;() 将为空。您可以做的是在您传递给您的视图的视图模型上拥有一个属性。像
    • 该属性可以是IEnumerable&lt;Mvc_baker.Areas.admin.Models.slidShow&gt; 类型。然后,您可以将此属性传递给Html.Partial() 调用。像@Html.Partial("~/Views/slider/slider.cshtml", Model.SlideShow) 这样的东西。这将允许您使用一些实际值设置视图之外的属性。
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2012-08-16
    • 2011-10-28
    相关资源
    最近更新 更多