2012-11-20 116 views
5

部分觀點我寫了這樣一個分部方法:ASP.NET MVC 4不靈

public ActionResult _StatePartial() 
     { 
      ViewBag.MyData = new string[] { "110", "24500" }; 
      return View(); 
     } 

和渲染_StatePartial鑑於_Layout頁:

@Html.Partial("_StatePartial") 

這是我的局部視圖代碼:

@{ 
    string[] Data = (string[])ViewBag.MyData; 
} 
<div id="UserState"> 
     Reputation: @Html.ActionLink(Data[0], "Reputation", "Profile") | 
     Cash: @Html.ActionLink(Data[1], "Index", "FinancialAccount") 
</div> 

但是當我運行這個項目時,_ StatePartial方法不調用,ViewBag始終爲空。

Server Error in '/' Application. 
Object reference not set to an instance of an object. 

請注意,這些參數不是我的模型字段,並通過調用Web服務方法進行計算。但我不斷在這個問題中設定這些價值。

我能爲此做些什麼? 任何想法將參數傳遞給局部視圖? 謝謝。

回答

9

您的來電:

@Html.Partial("_StatePartial") 

將渲染視圖,但它不會調用操作。如果您在父頁面操作中放置所有視圖數據,則只能使用此功能。在你的情況下,你需要使用這個:

@Html.Action("_StatePartial") 

這將調用操作首先檢索並執行該視圖。

+0

謝謝:)它的工作原理。 – Mojtaba

1

另外:

return View(); 

爲與佈局返回圖。您需要:

return PartialView(); 

而且我會建議使用此:

public ActionResult StatePartial() 
{ 
    ViewBag.MyData = new string[] { "110", "24500" }; 
    return View("_StatePartial"); 
} 

,但最好是使用強類型的模型,不ViewBag