首先,我是MVC的初学者。如果某个布尔字段为真,我如何能够在部分视图中的事件表中显示数据库中的数据。
这是我的部分观点:
@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);
}
答案 0 :(得分:2)
@{
Html.RenderAction("view","controller")
}
这将转到给定的控制器和必须返回具有正确模型的部分视图的操作
答案 1 :(得分:1)
对象引用未设置为对象的实例一直是我未初始化的列表。尝试在设置之前初始化推荐。
之类的东西List<Events> recommendedevents = new List<Events>();
用任何类型替换事件。
Html.Partial中的第一个参数是部分名称而不是方法调用。您需要将模型传递给视图,并将其视为视图模型并将其传递给部分
@Html.Partial("_RecommendedEvents", Model.Events)
或通过ajax调用加载部分。请在此处查看我的答案How do I render a partial form element using AJAX
答案 2 :(得分:0)
@HTML.Partial()
函数不会通过任何控制器动作进行渲染,它只是在文档中的那个位置呈现View的HTML。并且您没有将IEnumerable<TheBigEvent.Models.RecommendedEvents>
传递给该部分视图,因此当部分呈现时,Model
为空。
将IEnumerable<TheBigEvent.Models.RecommendedEvents>
对象放入主页面的View Model中,或者放在ViewBag中的某些内容上,并在调用Partial方法时将其传递给局部视图:
@HTML.Partial("_RecommmndedEvents", ViewBag.RecommendedEvents)
在顶级页面的控制器操作中,设置ViewBag.RecommendedEvents
就像在上面的控制器代码中实例化它一样。
答案 3 :(得分:0)
错误表示您的模型为空,
使用PartialView()
时会使用Ajax
,否则您可以按如下方式编写代码:
return View("_RecommendEvents", recommendedevents);