使用部分渲染时出错
本文关键字:出错 用部 | 更新日期: 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);
}