使用部分渲染时出错

本文关键字:出错 用部 | 更新日期: 2023-09-27 17:55:32

您好,我一直在尝试使用部分渲染从主视图访问我的部分视图的视图模型

部分视图是一个对话框,当我点击一个按钮时,对话框被打开,我通过调用控制器加载它,这里是控制器的代码:

public ActionResult ImagesPartial()
{
    ViewBag.Images = Directory.EnumerateFiles(Server.MapPath("~/images_upload"))
                      .Select(fn => "~/images_upload/" + Path.GetFileName(fn));
    return PartialView("_ImagesPartial");
}

在我的部分视图中,我使用此代码显示图像和一个单选按钮

@foreach(var image in (IEnumerable<string>)ViewBag.Images)
{
    @Html.RadioButtonFor(model => model.imageVenteCatalog, image)
    <img src="@Url.Content(image)" alt="Hejsan" width="100" height="100" class='selectable-image'/>
 }

最后在我的主视图中,我使用 renderpartial 来获取选择了哪个单选按钮

@{Html.RenderPartial("_ImagesPartial");}

但相反,我收到一个错误,说引用未定义

知道它可能是什么吗?

编辑:

查看数据["]没关系,我已经删除了,问题就在这里

@foreach(var image in (IEnumerable)ViewBag.Images)

但是为什么这会导致问题

使用部分渲染时出错

Html.RenderPartial

调用动作,它只是渲染视图,并且您希望调用操作以填充ViewBag.Images,我怀疑您想要Html.RenderAction

@{ Html.RenderAction("ImagesPartial","ControllerName"); }

对于填充模型,您必须按以下方式使用:

@Html.Partial("_ImagesPartial", Model)

在您看来

并更改控制器

public ActionResult ImagesPartial()
{
    //strore data in your model class data
    return PartialView("_ImagesPartial", pass your model data);
}