![](/img/trans.png)
[英]Partial view error Object reference not set to an instance of an object. MVC4 Razor
[英]MVC4 Partial View Error “Object reference not set to an instance of an object.”
首先,我是MVC的完整入门者。 如果某个布尔字段为true,如何在部分视图的事件表中显示数据库中的数据。
这是我的部分观点:
@model IEnumerable<TheBigEvent.Models.RecommendedEvents>
<table>
<tr>
<td>
@Html.DisplayNameFor(model => model.Event_Name)
</td>
<td>
@Html.DisplayNameFor(model => model.Event_Date)
</td>
</tr>
<tr>
@foreach (var item in Model) {
<td>
@Html.DisplayFor(modelItem => item.Event_Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Event_Date)
</td>
}
</tr>
</table>
这是我的控制器
public ActionResult _RecommendedEvents()
{
var recommendedevents = from Events in db.Database1
select Events;
recommendedevents = recommendedevents.Where(s => s.Recommended.Equals(true));
return PartialView("_RecommendEvents", recommendedevents);
}
和显示偏视图的代码
@Html.Partial("_RecommmndedEvents")
这是我收到的错误
[编辑]
public ActionResult _RecommendedEvents(RecommendedEvents model)
{
model = new RecommendedEvents();
var recommendedevents = from Events in db.Database1
select Events;
recommendedevents = recommendedevents.Where(s => s.Recommended.Equals(true));
return View(model);
}
@{
Html.RenderAction("view","controller")
}
这将转到给定的控制器和必须返回具有正确模型的局部视图的动作
对于我来说,未设置为对象实例的对象引用一直是未初始化的列表。 尝试在设置推荐事件之前对其进行初始化。 就像是
List<Events> recommendedevents = new List<Events>();
用任何类型替换事件。
Html.Partial中的第一个参数是部分名称,而不是方法调用。 您需要通过视图模型将模型传递给视图,然后将其传递给局部视图
@Html.Partial("_RecommendedEvents", Model.Events)
或通过ajax调用加载局部代码。 查看示例的答案。 如何使用AJAX渲染部分表单元素
@HTML.Partial()
函数不会通过任何控制器动作来呈现,它只是在文档中的该位置呈现View的HTML。 而且您没有将IEnumerable<TheBigEvent.Models.RecommendedEvents>
传递给该局部视图,因此当该局部渲染时, Model
为null。
将IEnumerable<TheBigEvent.Models.RecommendedEvents>
对象放入主页的视图模型中,或者放在ViewBag中的某个对象上,并在调用Partial方法时将其传递给部分视图:
@HTML.Partial("_RecommmndedEvents", ViewBag.RecommendedEvents)
在顶层页面的控制器操作中,设置ViewBag.RecommendedEvents
就像在上面的控制器代码中实例化它的方式一样。
该错误表示您的模型为null,在使用Ajax
时使用PartialView()
,否则可以编写如下代码:
return View("_RecommendEvents", recommendedevents);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.