【问题标题】:Asp.net web user control as bootstrap modalAsp.net web 用户控件作为引导模式
【发布时间】:2016-04-06 14:49:09
【问题描述】:

我有一个 mut 充当模态的用户控件 - 所以这个 Web 控件作为模态弹出很好,但不会触发链接按钮单击事件。 - 单击模态(网络用户控件)中的链接按钮时,它只会关闭模态弹出窗口。

在页面中打开模式弹出窗口的代码(工作正常):

protected void lbChatMessage_Click(object sender, EventArgs e) 
{         
    Control row = LoadControl("~/uc/page_chat_message.ascx");
    ((uc.page_chat_message)row).ID = "MessagePlugin";            
    phChatMessage.Controls.Add(row);
    ScriptManager.RegisterStartupScript(this, GetType(), "ChatModalScript", "$('#chat').modal('show');", true);
}

模式中的链接按钮单击(网络用户控件) - 它不起作用 - 我还把那个 AJAX UpdatePanel 放在了usercontrol 中:

<div class="col-xs-6 text-right">                                       
    <asp:LinkButton ID="ButtonSendMessage" CssClass="btn bg-teal-400 btn-labeled btn-labeled-right" runat="server" onclick="ButtonSendMessage_Click">
        <b> <i class="icon-circle-right2"> </i> </b> 
        Send
    </asp:LinkButton>
</div>

Web 用户控件的服务器端:

protected void ButtonSendMessage_Click(object sender, EventArgs e)
{

}

此按钮事件不会被触发

这个发送消息链接按钮不起作用,我做错了什么?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您添加用户控件的方式不会将该控件添加到页面的 ViewState。

    发生了什么:

    ButtonSendMessage_Click 触发一个 post_back 返回到服务器,但服务器在页面的 ViewState 中没有引用该控件,因此没有注册事件。

    你需要做什么:

    不要在lbChatMessage_Click 事件中添加控件,您应该已将控件添加到您的页面但隐藏。然后使用 Javascript 仅在按钮单击时显示该弹出窗口,而不是进行回发。这样一来,您的模态就在 ViewState 中注册,然后 ButtonSendMessage_Click 将正确触发。

    【讨论】:

    • 我已按照您的建议进行了更改 - 现在触发了按钮单击事件。谢谢......我现在面临的唯一问题是 - 当 SendMessage 按钮事件被执行时,模态表单(用户控件)就消失了(并将屏幕留在模态状态覆盖视图上(没有显示模态表单))知道那是什么吗?
    • 是的,因为 SendMessage 会执行一个完整的回发来重绘页面 - 您也可以在 SendMessage 方法中显式地使模式可见以解决此问题。如果您对我的回答感到满意,请标记为答案。
    • 是的,您正确的页面回发是一个问题。非常感谢您的帮助。
    猜你喜欢
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多