使用C#backend中的OnClientClick / OnServerClick填充锚标记

时间:2018-01-16 20:33:13

标签: c# asp.net onclick

我有一个动态数据,必须在.cs文件的UI上填充。 目前我这样做:

File.aspx

<div id="divLinks" class="w3-content w3-display-container" style="max-width:100%;" runat="server">
</div>

File.aspx.cs

StringBuilder str = new StringBuilder();
str.Append("<a target=\"_blank\"><img class=\"mySlides\" src=\"" + imageLink + "\" style=\"width:100%; height:350px;\" runat=\"server\" onServerClick=\"MyFuncion_Click("+link+")\" ></a>");
divLinks.InnerHtml = str.ToString();

protected void LinkButton_Click(object sender, EventArgs e)
{
  //Do something when clicked a link with parameter from that link as identifier
}

执行此操作后,我无法从onServerClick访问LinkBut​​ton_Click函数。

有人可以帮我解决这个问题,我想要一个具有独特价值的链接传递给函数进行进一步处理。

1 个答案:

答案 0 :(得分:1)

您正尝试将aspnet控件作为字符串添加到页面中。那不行。您需要在页面中添加“真实”控件。

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack == false)
    {
        //do not add dynamic controls here
    }

    //create a new ImageButton instance on every page load
    ImageButton ib = new ImageButton();

    //set some properties
    ib.CssClass = "mySlides";
    ib.ImageUrl = "~/myImage.png";

    //add the click method
    ib.Click += LinkButton_Click;

    //add the button to an existing control
    PlaceHolder1.Controls.Add(ib);
}

请注意,您需要在每个页面加载上添加动态控件,其中包括PostBack。