通过jQuery的.append()方法添加ASP.Net元素

3
有没有可能做类似这样的事情?
$("#popupForgot").append("<asp:TextBox ID='emailTextF' runat='server' Width='200px' Text='" + $.cookie("forLogin") + "'></asp:TextBox>")

我需要将一个asp.net元素追加到一个div标签中,该元素的文本内容为cookie值。我已经尝试上面的代码,但它没有起作用。
提前感谢您。

您只能使用jQuery附加HTML控件,而不能使用ASP.NET控件。 - Sushanth --
4个回答

4

因为asp:TextBox是通过服务器端渲染的,而jQuery则是在客户端操作的,所以无法实现此操作。

但是你可以使用asp:TextBox控件渲染文本框,然后再用jQuery更改其值:

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

更新

事实证明,asp:TextBox 渲染的 id 不等于 asp:TextBox 中使用的 id 参数,请尝试以下代码:

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

你能发布一下文本框的HTML代码吗?你在document.ready中执行了JavaScript代码吗? - Zbigniew
ASP将更改文本框的ID;您需要确保生成的ID在JavaScript中可用,或在文本框上设置适当的属性以不更改ID。 - Servy
@R.App 可能无法正常工作的原因是,.Net控件通常具有与原始服务器端ID不同的客户端ID。您可能需要在运行时使用<%=emailTextF.clientID %>来获取正确的客户端ID。 - Rondel
@Rondel 是的,看起来是这样,我已经更新了我的答案来解决这个问题。 - Zbigniew

2
JQuery最终只是JavaScript代码。JavaScript代码在客户端浏览器中运行。ASP标签是服务器端构造的,它们将在发送到客户端浏览器之前转换为字段(或其他多行文本框)。这两个概念完全独立,不能直接相互交互。如果您想通过JQuery添加文本框,则不能使用ASP文本框,而应该使用HTML文本框。如果您真的需要添加ASP文本框(从您展示的内容看似乎不需要),则需要向服务器进行回传以添加它。(如果需要,可以通过AJAX异步执行该回传。)

1

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


0

你不能这样做,因为 ASP.NET 标签是在数据发送到客户端之前在服务器端处理的。
解决方法有以下两种:
-在前端添加 ASP.NET 控件,并通过 JQuery 更改其值。
-如果需要动态添加控件,则使用标准的 HTML 标签,并从表单中获取数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接