0

Ajax.ActionLink をクリックすると、ViewBag.Title に従ってページ タイトルが自動的に変更されるようにしたい。できたのですが、ActionExecutedFilter から「razor.cshtml」ファイルに割り当てられた ViewBag.Title にアクセスできません。ActionExecutedFilter からアクション メソッドでのみ割り当てられた ViewBag.Title にアクセスできます。

ActionExecutedFilter は次のようになります。

string scriptText = "<script type='text/javascript'>document.title = '" 
                    + ViewBag.Title + "';</script>";
filterContext.HttpContext.Response.Write(scriptText);

これを達成する方法は?

4

1 に答える 1

0

これで問題を解決できると思います。ただし、ViewBag を使用しているわけではありませんが、タイトルの値も部分ビュー ファイルに関連付けられます。よく理解できれば、それはあなたの意図です。

あなたの部分的な見方

<span id="mySpan" style="display:none">Page header</span>
@Ajax.ActionLink("MyLink", "Random", 
                 new AjaxOptions() { HttpMethod = "GET", 
                                     UpdateTargetId = "random", 
                                     OnSuccess = "document.title = document.getElementById('mySpan').innerHTML" 
                  });

<div id="random">
    Random goes here.
</div>

部分ビューからドキュメント タイトルに設定する値は、スパン内に隠されています (必要に応じて、ヘッダー<h1/>またはサブヘッダーの値になることもあります)。<h2/>

于 2012-11-27T21:23:40.660 に答える