当点击Ajax.ActionLink,我想页面标题根据ViewBag.Title自动改变。 我可以做,但我不能访问从ActionExecutedFilter“razor.cshtml”文件分配ViewBag.Title。 我可以访问ViewBag.Title只能在离ActionExecutedFilter操作方法分配。
该ActionExecutedFilter可能是这样:
string scriptText = "<script type='text/javascript'>document.title = '"
+ ViewBag.Title + "';</script>";
filterContext.HttpContext.Response.Write(scriptText);
如何实现这一目标?
我认为这可以解决你的问题。 但是它没有使用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/>
...取决于你的需要)。