0

单击 Ajax.ActionLink 时,我希望页面标题根据 ViewBag.Title 自动更改。我可以这样做,但我无法从 ActionExecutedFilter 访问在“razor.cshtml”文件中分配的 ViewBag.Title。我可以从 ActionExecutedFilter 访问仅在 Action Method 中分配的 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 回答