2012-11-20 93 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