【问题标题】:reference element added during page load在页面加载期间添加的参考元素
【发布时间】:2017-02-16 01:15:32
【问题描述】:

如何引用在页面加载期间添加到 html 的元素?

在我的示例中,我尝试在页面加载期间单击 ID 为 Clicker 的按钮。

但是,因为它是在页面加载期间添加到 html 中的,所以我得到了上下文错误。

错误: 编译器错误消息:CS0103:当前上下文中不存在名称“clicker”


protected void Page_Load(object sender, EventArgs e)
{
//add button to html
locationsTable.InnerHtml = htmlString;

//click the button
clicker.PerformClick();
}

 htmlString += "<td><button id=\"clicker\" runat=\"server\" class=\"btn btn-default btn-xs\" onclick=\"return false;\"><span class=\"glyphicon glyphicon-option-horizontal\"></span></button>" + " " + "<a href=\"ModifyOrder.aspx?cid=" + row["CustomerID"] + "\" class=\"btn btn-primary btn-xs\">Add License</a></td>";

在页面加载期间,这个 htmlString 被添加到一个 html 表格中(与其他元素一起,但它们无关紧要)。

locationsTable.InnerHtml = htmlString;

【问题讨论】:

  • 我认为您将 javascript 与 c# 混淆了
  • 不 ....................
  • 那么让我们澄清一下。当用户单击页面 html 中的 id="clicker" 按钮时,您是否尝试执行操作?
  • 是的。动作可以是任何东西。我只是想用点击器的 ID 来定位元素。问题是 Clicker 尚未添加到 DOM 中。所以 C# 编译器找不到它。所以我得到参考错误。
  • 根据 C# 编译器“clicker”不存在。因为在页面加载之前,它不会被添加到 html 或 .aspx 页面中。那么如何将任何内容分配给按钮点击器?

标签: c#


【解决方案1】:

onclick=\"return false;\"

你不能像这样将 c# 代码放在 HTML 中,因为它会真正变成 HTML 代码(它是一个字符串,而不是代码)。

但是,如果您想知道将OnClick 事件的事件侦听器连接到id,我相信来自here 的这段代码sn-p 可以解决问题...

protected void Page_Load(object sender, EventArgs e)
{    
    locationsTable.InnerHtml = htmlString;
    htmlString += "<td><button id=\"clicker\">Add License</a></td>";

    if(IsPostBack){
        var eventTarget = Request.Params["__EVENTTARGET"]
        var buttonClicked = eventTarget.Substring(eventTarget.LastIndexOf("$") + 1).Equals("clicker")
    }
}

【讨论】:

  • 可以点击按钮吗?
猜你喜欢
  • 1970-01-01
  • 2011-03-05
  • 2017-12-13
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多