5

_Layout.cshtmlファイルには、次のエントリがあります

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

PageControllerクラス内では、 LoadPagesStructureメソッドは次のようになります。

[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();
}

最後に、私のLoadPagesStructure.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.

私のページへのリンクを動的に作成する方法は何ですか?

PS:私はこれをそのように行うことができることを知っています: <a href="@page">@page</a>. とはいえ、ここではルーティングの制御が不可能なので、これは正しい方法ではないと思います。

よろしく

4

1 に答える 1

3

私はあなたがPartialViewあなたのLoadPagesStructure()行動のためにを返す必要があるかもしれないと思います。

これを試して:

[ChildActionOnly]
public ActionResult LoadPagesStructure()
{         
    ViewModel.Pages = new List<string>() {"page1", "page2", "page3"};
    return PartialView();
}
于 2010-08-26T16:15:04.637 に答える