Here's the scenario: A class based on System.Web.UI.Page has been created. A number of content pages derive from this class. All of these content pages use the same master page. The content pages define controls which need to access things on the master page (in code-behind). This is fine - no problem. In particular, each content page has its own data grid. The grid on each page has the same name, so that common code can reference it. In fact, some event handling for the grids on each content page is identical, so would like to factor that code to the base class. Interestingly, I can actually define the event handler entirely in the base class, with no stub in the content class at all, because the wire-up of event handlers uses the event-handler name defined in the grid, and that name happens to be found in the inherited base class. All good and dandy... very cool in fact. The problem comes when the code in the base class needs to access any of the common elements from the content page's master. Remember, the master is the same, and I know the type of the master. I would like to do something like this in the base-class code:
((myMasterType)this.Master).PropertyofMaster=xxx;
The problem is, that myMasterType - the type of the master page the content pages are using - is not available at compile time, at least not from a class definition for a base page. I've found articles that claim that the class name of the master is available - and it is, but not from a separate class. I CAN see it and compile with the master's class name from, for example, the code behind of the various content pages. But the actually class simply isn't available, it seems, from a pure class (the base page class). Judging from other times this question has been asked, here are common misunderstandings offered as solutions: 1. Use a page directive to declare the master type. This is not even vaguely a part of the problem, as the issue is not code in the content page, but in a separate base class which content pages inherit from. That base class is a pure class -- no .ASPX file at all. 2. Pass a reference to the master object from the content page to the base class. This can be done, but is pointless, because I can already get it, using "this.Master" from the base class! But because the type of the master is not available at compile time from the base class, it can't be passed from the content page either - unless it is passed with type MasterPage, thus losing all the properties/methods publically defined in the specific master page class. 3. Move the base page class out of the App_Code folder because the app_code folder is compiled before the other classes, and thus before the master page class. Doesn't work -- put the master page class file right in the same folder with these content pages and their master page, and the master page class is still not available at compile time from within the class. Re-summarized: Base page inherited by content pages. Content pages all use a common master page. Want to access the public properties of that master page from the base page, at runtime. Barrier is that I can find no way from within the base class to cast the master page object to the actual master page subclass being used.
All I want to do is access the <body> element from the code-behind of a content page and add a class name to it.
I have a top-level master page with the <body> element in it. Then I have a nested master page which is the master page for the content page. From the code behind of the content page I want to add a class name to the body element. That's all.
I have this in the top-level master:
<body id="bodyNode" runat="server">
I added this to the code-behind for the content page:
FROM BOOK: To reference public properties in a master page, we add the @MasterType declaration to the content page and reference the property using Master.<PropertyName>.
QUESTION: But what happens internally? Does all of the master's and content page's properties, function gets complied into one class? Or something else?
I've got a web site that has a master page and that master page (mpMaster that has a user control ucControl1) which has a sub user control (ucControl2), this user control has a property which accepts a value. Now, I have a page that uses the master page and on this page I have another user control (ucPageControl), I need to find a way of setting the value in ucControl2 from ucPageControl. Is this possible at all?
Following is the structure of the pages in application
[Code]....
Suppose the user is on ..../paycheck.aspx which is the content page. But when ...../paycheck.aspx loads, "lnkDynamic" properties "Text and PostBackUrl" must be set. Which events should be handled .....
My project has the following repeater menu shown on the Master Page. I need this menu to remain hidden until the user logs in. How do I access from content page?
I am trying to declare a public property and access it from another page. I can't seem to be able to declare it. I'be tried putting in the code behind but it gives me errors.
In master page I am using asp content place holder. And in my child page I am using pure html coding. When I attach master page in my child page I am getting this error.Content controls have to be top-level controls in a content page or a nested master page that references a master page.
I have a master page setup that is used throughout my site that is basically a header with a menu. I recently added a textbox and a button to this master page which is to be a quick search box that is available anywhere in the site. When a user enters text into the search box and hits the button, I need to load the actual content page which is used to search and show search results (which also uses this same master page), and have the text entered available so the search can be triggered automatically. Again, this search text box and button is now in my master page so it could be triggered from anywhere in the app... it serves as a convenient way to do a basic search from anywhere in my app, without having to first navigate to the actual 'search page' that already exists. You can also navigate to the actual search page, which uses the same master page, where there is many more search options.I'm thrown off by the master page arrangement, which I have not used until this project. What do I do?
I have 2 nested master pages, lets call them MP1 and MP2. MP1 is top level, MP2 is level
2. Then I have several content pages. Lets say I have 2 content pages for now CP1 and CP2. Each content page has a form that will have some user input and a SaveData()function that saves the data to a database. Each content page also has a "Save" button that calls the SaveData() function.
MP1 and MP2 have several link buttons. The functionality I need is this: Any time a user clicks on a link button in MP1 or MP2, the SaveData() function of the currently loaded page should be called. This is to save the data even if the user forgets to click the "Save" button before leaving the page.
So far I can do this from the link buttons in MP2. I followed the master pages tutorial # 7
In the .cs file for MP2, I declare:
public event EventHandler SaveData;
then i raise a "SaveData" event any time a link button in MP2 is clicked.in every content page (CP1, CP2 etc.) aspx file, I have Master Type directive to assign the Master Page to MP2.
in CP1, CP2 etc .cs file, i have the following code: protected void Page_PreInit(object sender, EventArgs e) { //wire up the SaveData event from MP2 to Master_SaveData function in this page. Master.SaveData += new EventHandler(Master_SaveData); } private void Master_SaveData(object sender, EventArgs e) { //when the MP2 SaveData event is raised, save the data in this page. SaveData(); }
All of this works fine.Problem is I am not able to do a similar thing from MP1.What I have tried so far is to raise an event in MP1 that is handled in MP2. When the event is handled in MP2, it raises the SaveData event to be handled in the page. The event in MP1 is null and hence never raised.
I have a web page (Orders.aspx) that gets some orders and show them in a Gridview .The orders list I get from DB is depend on a field named Status. The page has a master page that contains a Tab user control. The user control has several tabs and every tab has a different Status. Therefor, when the user clicks on every tab, I want to pass a value as status to my content page (Orders.aspx) and then select the orders from DB based on status.
How to access a control declared in a Master Page in a content page.I have a ModalPopUpExtender in Master Page and i want to access it from a content page, how can i do that.
I created one method in master page, I want to use that method in some other page(Child or Content page).I tried this method but No luck, it's not working in Master Page:
public partial class TestMaster : System.Web.UI.MasterPage { public void XXXX() { } }
it is very easy to access master page control from content page like
[code]....
but how could i access controls of content page from master page. suppose a textbox there in content page and one button is there in master page. i want that when i will click on master page button then i want to show the text of textbox in the content page in the label of master page. how to achieve it.
Does any know why I can't access the my custom user control StatusBar which is declared inside a masterPage?
In the ContentPage, I tried referencing the control this way "this.Site.stastusBar" and "this.Master.Status" and neither one works. Both instellisense warns me that "statusBar" does not exist.
on master page, i have declared a label control & set value to it.now on content page, i m able to find the control, but the value is alwasy null & not the one which was set.when i debugged, content page's load event is called first, after that the master page is called.so where should i access the master page control so that i get the set value.