MVC4部分视图错误"对象引用未设置为对象的实例。"

时间:2014-04-15 17:03:55

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

首先,我是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")

这是我收到的错误

enter image description here

[编辑]

 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);


    }

4 个答案:

答案 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);