ASP.NET中的Snackbar

时间:2017-09-26 10:00:14

标签: asp.net html5 css3 toast

我正在使用w3schools的代码: TryIt

如何使用OnClientClick将它与asp:LinkBut​​ton或asp:Button集成,而onClick正在执行服务器代码。

1 个答案:

答案 0 :(得分:0)

聚会晚了将近一年,但我刚刚使用了同一个小吃店。

它需要一个UpdatePanel,并且您需要在事件处理程序上注册一个客户端脚本块:

<asp:UpdatePanel runat="server" ID="UpdatePanel1">
    <ContentTemplate>
        <div>
            <asp:Button runat="server" ID="ShowSnackbar" Text="Show Snackbar" OnClick="ShowSnackbar_Click" />
        </div>

        <div id="snackbar">
            <asp:Label runat="server" ID="Snack" />
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

后面的代码很棘手,但是有效。在页面加载时,创建一个包含javascript的字符串,然后使用该字符串值注册您的脚本块...

private string snackbarScript;

protected void Page_Load(object sender, EventArgs e)
{
    snackbarScript = GenerateSnackbarJS();
}
private string GenerateSnackbarJS()
{
    var sb = new StringBuilder();
    sb.AppendLine("var x = document.getElementById('snackbar');");
    sb.AppendLine("x.className = 'show';");
    sb.AppendLine("setTimeout(function(){ x.className = x.className.replace('show', ''); }, 3000);");
    return sb.ToString();
}

protected void ShowSnackbar_Click(object sender, EventArgs e)
{
    Snack.Text = "Here's the snackbar";
    ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "snackbar", snackbarScript, true);
}