Literal中的锚控件

本文关键字:控件 Literal | 更新日期: 2023-09-27 17:54:06

using System;
namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        public void Download(object obj, EventArgs e)
        {
            Response.Write("abc");
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Literal1.Text = "<a id='anc' href ='#' runat='server' onserverclick='Download'>Click Me</a>";
            Response.Write(Literal1.Text);
        }
    }
}
 <div>
    <asp:Literal ID="Literal1" runat="server"></asp:Literal>
 </div>

我有上面的代码片段。我试图以以下方式将文字内的锚绑定到函数:onserverclick = "Download"

但是事件没有触发。要求是锚只通过字面量呈现。

请帮。

Literal中的锚控件

当您的Literal1控件是服务器端控件时,设置。text值来表示服务器端控件将不起作用。

可以使用asp LinkButton控件而不是文字

所以你的。aspx页面会有:

<asp:LinkButton ID="abc" runat="server" OnClick="Download" Text="Download" />

和.aspx.cs后面的代码如下:

protected void Page_Load(object sender, EventArgs e)
{
}
protected void Download(object sender, EventArgs e)
{
    Response.Write("abc");
}

属性runat="server"在客户端代码中是没有意义的(这就是您在这里生成的代码)。您可能需要调用web服务

我们在文字之外使用锚标记。然后就可以了

如果你不希望使用LinkButton,你可以用你在Page_Load上添加的文本替换你的Literal(不完全确定你为什么这样做?)。

然后运行一个AJAX web请求来运行Download方法