5

我写了一个这样的部分方法:

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 服务方法来计算的。但我不断在我的问题中设置这些值。

我能为此做些什么?将参数传递给局部视图的任何想法?谢谢。

4

2 回答 2

9

你的来电:

@Html.Partial("_StatePartial")

将呈现视图,但不会调用操作。仅当您在父页面操作中查看所有视图数据时才使用此选项。在你的情况下,你需要使用这个:

@Html.Action("_StatePartial")

这将首先调用该操作来检索和执行视图。

于 2012-11-20T08:57:45.793 回答
1

还:

return View();

用于返回带有布局的视图。你需要:

return PartialView();

我建议使用这个:

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

but better to use strongly typed models, not ViewBag

于 2012-11-20T09:03:16.250 回答