【问题标题】:Append ASP.Net element via jQuery .append()通过 jQuery .append() 附加 ASP.Net 元素
【发布时间】:2012-10-01 02:52:39
【问题描述】:

有没有可能做这样的事情

$("#popupForgot").append("<asp:TextBox ID='emailTextF' runat='server' Width='200px' Text='" + $.cookie("forLogin") + "'></asp:TextBox>")

我需要将一个 asp.net 元素附加到一个 div 标记,该标记将具有 cookie 值作为它的文本。上面的代码我试过了,还是不行。

提前谢谢你

【问题讨论】:

  • 您只能使用 jQuery 附加 HTML 控件,而不能附加 ASP.NET 控件

标签: c# jquery asp.net append


【解决方案1】:

这是不可能的,因为asp:TextBox 是通过服务器端呈现的,而 jQuery 在客户端工作。

但是,您可以使用 asp:TextBox 控件呈现您的文本框,然后您可以使用 jQuery 更改其值:

$("#emailTextF").text($.cookie("forLogin"));

更新

原来asp:TextBox渲染的id不等于id参数(在asp:TextBox内部使用),试试这个:

$("#<%= emailTextF.ClientID %>").text($.cookie("forLogin"));

【讨论】:

  • 你能发布你的文本框的 html 吗?您是否在 document.ready 中执行了 JavaScript 代码?
  • ASP会改变文本框的ID;您要么需要确保生成的 ID 在 javascript 中可用,要么在文本框上设置适当的属性以不更改 ID。
  • @R.App 它可能不起作用的原因是 .Net Controls 通常具有与原始服务器端 ID 不同的客户端 ID。您可能必须使用 在运行时获取正确的客户端 ID
  • @Rondel 是的,看来是这样,我已经更新了我的答案来解决这个问题。
【解决方案2】:

您的代码将在浏览器中运行,这意味着您的 asp:TextBox 不会被服务器处理。所以,简而言之,没有。

【讨论】:

    【解决方案3】:

    说到底,JQuery 只是 JavaScript 代码。 Javascript 代码在客户端的浏览器中运行。

    ASP 标签是一种服务器端结构;在发送到客户端浏览器之前,它们将被转换为 &lt;input type="Text"/&gt; 字段(或多行文本框的其他字段)。

    这两个是完全独立的概念,不能真正相互(直接)交互。

    如果你想通过 JQuery 添加文本框,它不能是 ASP 文本框,它需要是 HTML 文本框。如果您确实需要添加一个 ASP 文本框(但从这里显示的内容来看,您似乎不需要它),那么您需要回发到服务器以添加它。 (如果需要,您可以通过 AJAX 异步执行回发。)

    【讨论】:

      【解决方案4】:

      您不能这样做,因为 ASP.NET 标记在数据发送到客户端之前在服务器端处理。
      方法是:
      -在之前添加这个 ASP.NET 控件,并通过 JQuery 更改它的值,
      -如果您需要动态添加控件,请使用示例html标签,并从表单获取服务器上的数据。

      【讨论】:

        猜你喜欢
        • 2011-01-10
        • 1970-01-01
        • 2014-09-19
        • 1970-01-01
        • 2013-12-02
        • 2010-11-30
        • 2010-12-02
        • 1970-01-01
        • 2015-07-27
        相关资源
        最近更新 更多