【问题标题】:ASP.NET MVC 4 partial view not workingASP.NET MVC 4 部分视图不起作用
【发布时间】:2012-11-08 07:13:01
【问题描述】:

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

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

并在_Layout页面中渲染_StatePartial视图:

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

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

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 partial-views


    【解决方案1】:

    您的电话:

    @Html.Partial("_StatePartial")
    

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

    @Html.Action("_StatePartial")
    

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

    【讨论】:

      【解决方案2】:

      还有:

      return View();
      

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

      return PartialView();
      

      我建议使用这个:

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

      但最好使用强类型模型,而不是ViewBag

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-05
        • 2014-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        相关资源
        最近更新 更多