对象引用未设置为MVC5中对象的实例

时间:2014-12-07 19:53:08

标签: asp.net-mvc

我有一个MVC5应用程序,在HomeController中,我有一个ActionResult定义如下:

    public ActionResult BlogRSS()
    {
        var model = new BlogModel();
        string strFeed = "http://webmysite.com/feed";

        using (XmlReader reader = XmlReader.Create(strFeed))
        {
            SyndicationFeed rssData = SyndicationFeed.Load(reader);
            model.BlogFeed = rssData;
        }

        return View(model);
    }

然后,对于这个ActionResult,我创建了一个名为BlogRSS的部分视图,如下所示:

@model MyApp.Models.BlogModel

@{
    if (Model.BlogFeed != null)
    {
        <ul>
            @foreach (var post in Model.BlogFeed.Items.ToList().Take(3))
            {
                <li><a href='@post.Links.First().Uri' target='_blank'>@post.Title.Text</a></li>
            }
        </ul>
    }
}

我的模型定义如下:

public class BlogModel
{
    public SyndicationFeed BlogFeed { get; set; }
}

所以,关键是我想在我的_Layout.cshtml文件中调用该部分视图,但是当网站打开时,我会收到标题中指定的错误消息。我想它根本不是调用我的BlogRSS方法。我在_Layout.cshtml中调用它,如下所示:

 <div class="col-md-4">
       Blog
       <br />
       @Html.Partial("BlogRSS")
 </div>

如何解决问题,并确保在渲染视图之前也调用相应的ActionResult?

1 个答案:

答案 0 :(得分:0)

问题在于您正在调用部分视图,该视图仅在不调用控制器的情况下呈现视图,而传递给该视图的模型为null

有几种方法可以解决这个问题:

1)使用Action代替Partial

@Html.Action("BlogRSS", "Blog")

2)定义一个基本ViewModel,您将传递给每个视图并将您的Feed添加到其中。