代码之家  ›  专栏  ›  技术社区  ›  jwaliszko

子操作不允许执行重定向操作-使用时出错ASP.NETMVC 2和Razor

  •  5
  • jwaliszko  · 技术社区  · 14 年前

    _布局.cshtml 文件我有以下条目:

    @Html.Action("LoadPagesStructure", "Page")
    

    页面控制器 加载页结构 方法如下:

    [ChildActionOnly] /* this attribute indicates that an action should not 
                         be invoked as a result of a user request (by url) */
    public ActionResult LoadPagesStructure()
    {         
        ViewModel.Pages = new List<string>() {"page1", "page2", "page3"};
        return View();
    }
    

    最后,我的 加载页面结构.cshtml看法 如下所示:

    @inherits System.Web.Mvc.WebViewPage<dynamic>
    
    <ul>
        @foreach (var page in View.Pages) {
        <li>        
            @Html.ActionLink(page, "Index", "Home")
        </li>
        }
    </ul>
    

    很遗憾,执行后会引发异常:

    System.InvalidOperationException: Child actions are not allowed to perform redirect actions.
    

    如何动态创建指向我的页面的链接?

    附言: 我知道我可以这样做: <a href="@page">@page</a> . 然而,我认为这不是正确的方法,因为在这里控制路由是不可能的。

    当做

    1 回复  |  直到 12 年前
        1
  •  3
  •   yoozer8    13 年前

    我想你可能需要退票 PartialView LoadPagesStructure()

    试试这个:

    [ChildActionOnly]
    public ActionResult LoadPagesStructure()
    {         
        ViewModel.Pages = new List<string>() {"page1", "page2", "page3"};
        return PartialView();
    }