2

@RenderPage2 つの類似したページでコードを再利用するために使用しています。2 つのページのそれぞれは、次のものだけで構成されています@RenderPage

@RenderPage("~/Views/PathToImplementation.cshtml", new { paramsListHere })

再利用されたコード (内部PathToImplementation.cshtml) はViewBag.Title、ページ タイトルを設定するために使用します。

ViewBag.Title = somethingUseful;

問題はViewBag.Title、再利用されたコードの内部からの変更が元のページに影響を与えないことです。何も起こりません。

によって呼び出されたコードからページのタイトルを変更するにはどうすればよい@RenderPageですか?

4

2 に答える 2

2

RenderPageが使用されたときにViewBag複製され、コピーがページに渡されてRenderPageレンダリングされ、戻る方法がないように見えます。したがって、これまでに見つけた最もクリーンな方法は、 を呼び出すページへの参照を渡すことRenderPageです。このようなもの:

//calling page
@RenderPage( PathToPage.cshtml, new { ParentPage = this } )

//PathToPage.cshtml
@{  WebViewPage parentPage = PageData["ParentPage"];
    parentPage.ViewBag.Title = blahblahblhah;      
}
于 2012-11-22T13:22:46.463 に答える
0

タイトルが 内にPathToImplementation.cshtmlあり、パラメーターを使用して 内でタイトルを設定する場合、パラメーターには を使用PathToImplementation.cshtmlしてアクセスする必要がありますPageDataMSDN .

ここに例があります

元;

   @PageData[index]; //Or 
   @PageData["title"];
于 2012-11-21T10:41:32.070 に答える