单击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);
如何实现这一目标?
答案 0 :(得分: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/>
的值...取决于您的需要)