2014-12-07 70 views
0

我有一個MVC5應用程序,並在HomeController中,我已經定義一個ActionResult這樣的:對象引用不設置爲一個對象的一個​​實例在MVC5

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被渲染視圖前還叫什麼名字?

回答

0

問題是,你正在調用一個局部視圖,只是渲染視圖而不調用控制器,傳遞給該視圖的模型是null

有幾種方法如何解決這一問題:

1)使用Action代替Partial

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

2)定義一個基視圖模型,你會傳遞給每個視圖,並把你的飼料進入它。

+0

問題是我想在_Layout.cshtml文件中調用它。如果我嘗試使用Html.Action,那麼頁面根本不會打開,它會一直加載。 – tett 2014-12-07 21:57:35

+1

@tett啊,我看到了問題。嘗試在你的動作中使用'return Partial(model)'。 – 2014-12-07 22:00:31

相關問題