通过aspx页面的按钮及时更新控件值以进行渲染

时间:2016-01-17 21:26:29

标签: c# asp.net

我正在更新现有的asp.net应用程序,并在带有登录按钮的页面上,如果有任何错误,错误当前只是通过Response.Write插入到页面正文中。

我正在尝试创建一个控件,允许更新邮件标题和正文,然后以叠加方式显示。

单独的元素工作正常,但我只是在按钮触发的页面后面的代码中更新消息头和正文时遇到问题。我认为属性更新太晚,无法在页面中显示。似乎我可以在页面加载期间及时更新变量,但不能在按钮启动时更新

ASCX

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Prompt.ascx.cs" Inherits="Intranet.Controls.Prompt" %>

<h3><asp:literal runat="server" id="pTitle" Text="Alert" /></h3>
<div class="promptContent">
    <asp:Literal ID="promptContent" runat="server" text="" />
</div>
<asp:Button ID="closePrompt" runat="server" Text="OK" OnClick="closePrompt_Click" />

ascx.cs

public partial class Prompt : System.Web.UI.UserControl
{
    private String _promptMessage = string.Empty;

    public string promptMessage
    {
        get { return _promptMessage; }
        set { _promptMessage = value; }
    } 


    protected void Page_Load(object sender, EventArgs e)
    {
            promptContent.Text = _promptMessage;
        }
    }

    protected void closePrompt_Click(object sender, EventArgs e)
    {
        Page.Master.FindControl("showGenericPrompt").Visible = false;
    }
}

aspx页面

<Intranet:Prompt ID="SQLPlaygroundPrompt" runat="server" />

aspx.cs

    protected new void Page_Load(object sender, EventArgs e)
    {
        base.Page_Load(sender, e);
        //updatePrompt("if I change it here we're golden (it works)");
    }

    private void updatePrompt(String messageToDisplay)
    {
        SQLPlaygroundPrompt.promptMessage = messageToDisplay;
    }

    protected void btn_Login_OnClick(object sender, EventArgs e)
    {
        updatePrompt("a test");
        Page.Master.FindControl("showGenericPrompt").Visible = true;
    }

请告诉我如何更新btn_Login_OnClick事件中的promptMessage值

1 个答案:

答案 0 :(得分:1)

我建议在主页面中输入提示信息而不是usercontrol, 在主页面中添加div

<div id="ResultDiv" runat="server" visible="false"></div>
masterpage.cs中的

创建一个返回div值的属性

public HtmlGenericControl ResultDivProp
    {
        get {return ResultDiv; }
    }

并在登录页面中使用此代码获取div值

response.write(this.Master.ResultDivProp)

您必须将此代码放入登录页面.aspx

<%@ MasterType VirtualPath="~/yourMasterPage.Master" %>