如何使用@ Ajax.ActionLink更新Html文档标题

时间:2012-11-21 13:48:26

标签: asp.net asp.net-mvc razor asp.net-mvc-4

单击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);

如何实现这一目标?

1 个答案:

答案 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/>的值...取决于您的需要)