Im Hari
Im Hari

Reputation: 68

Messagebox from master page

How to display a messagebox from the ASP.net(C#) master page itself. I mean when a link button on the master page is clicked a message box is to be displayed. i've tried calling the following method with no result.

public void MessageBox(string message, Page  page)
{
    if (!string.IsNullOrEmpty(message))
    {
        Label lbl = new Label();
        lbl.Text = "<script type=\"text/javascript\" language=\"javascript\">" 
                   + "alert('" + message + "'); " + "</script>";
        page.Controls.Add(lbl);
    }
}

Upvotes: 0

Views: 3727

Answers (5)

Im Hari
Im Hari

Reputation: 68

The following code worked for me.

linkbutton1.OnClientClick ="javascript:alert('Hello')" 

Upvotes: 0

Vishal Patel
Vishal Patel

Reputation: 281

On the page load of master page write the following code

lnkButton.Attributes.Add("onclick","alert('message');");

Upvotes: 0

asawyer
asawyer

Reputation: 17808

You should use ClientScriptManager.RegisterClientScriptBlock to add scripts to the page instead of literal controls with javascript values.

I'd suggest a base class for your master page, something like:

public sealed class MasterPageBase : MasterPage
{
    protected void AddAlertMessage(string Message)
    {
        var script = String.Format("alert('{0}');", Message);
        this.Page.ClientScript
            .RegisterStartupScript(this.GetType(),"PageAlertMessage",script,true);
    }

}

Now set this as your base across your master pages, and you can call:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    this.AddAlertMessage("Hello");
}

The main benifit is that the script details are abstracted away, and you can easily make global changes to them (switching to a Growl Style alert for instance) without making many page edits.

Upvotes: 0

Tim Schmelter
Tim Schmelter

Reputation: 460208

Either register the OnClientClick to the LinkButton, then the alert will be shown before the postback, or register the alert-script in the Click-Event handler during postback, so that the alert will be shown as soon as the page is rendered to the client the next time:

protected void Page_Load(object sender, System.EventArgs e)
{
    MyButton.OnClientClick = "alert('MyButton clicked!');";
}

protected void MyButton_Click(object sender, System.EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "AlertScript", "alert('MyButton clicked!');", true);
}

Upvotes: 2

RJ.
RJ.

Reputation: 3181

I just put your code into a page and it worked with no problem. It was not a master page but I see no difference in why it wouldn't work in a master page just as well. Here is the code that worked for me:

The linkbutton in the page:

        <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>

The code behind:

        public void MessageBox(string message, Page page)
    {
        if (!string.IsNullOrEmpty(message))
        {
            Label lbl = new Label();
            lbl.Text = "<script type=\"text/javascript\" language=\"javascript\">" + "alert('" + message + "'); " + "</script>";
            page.Controls.Add(lbl);
        }
    }

    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        MessageBox("test", Page);
    } 

Upvotes: 0

Related Questions