I’m trying to pass a value to Page.Title in a nested WebForms Master Page, from my Razor layout page (_layout.cshtml), or anywhere else inside razor.
I’ve tried using various combinations of Page.Title with this, Master, Parent and so on. I’ve tried to access ViewState from inside Razor. I’ve tried to use ViewBag from the WebForms Master Page. The most successful attempt so far has been using a Session variable, which unfortunately doesn’t update the title until the next page load (the updated title is always set for the previous page instead of the current one).
The reason for setting the Title in this way is two-fold. The first part is that I can’t change the root WebForms Master Page, with the tag in it. The second is that changing it using JavaScript/jQuery would probably result in SEO (Search Engine Optimization) issues. If there’s a way around the SEO issue, I can probably avoid all of this by using jQuery.
I’m generally using the following article to accomplish embedding Razor inside WebForms:
http://www.eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx
The only way I’ve found that I can change the title is by setting Page.Title from the code-behind of the “nested WebForms Master Page”. Unfortunately, I don’t appear to have access into Razor from here. I’ve tried this from Page_Load and Page_PreRender. I’ve attempted to implement a method for PreRenderComplete, without any success. Is it possible that I could do this successfully from a different point in the ASP.Net Page Lifecycle?
My page hierarchy looks like the following:
root WebForms Master Page (no ability to modify, has tag)
nested WebForms Master Page (w/ code-behind)
MVC Master Page (no code-behind)
ASPX Page (renders Razor)
MVC Layout
MVC View
Any ideas how to get a title from Razor to the nested WebForms Master Page’s code-behind? Is there a better, simpler way to do this that I’ve overlooked?
I was able to successfully pass the title from the Controller to the nested WebForms Master Page using a Session variable. I was then able to successfully change the title from the nested WebForms Master Page after SaveStateComplete.
Session appears to be the only over-arching data container.