あなたの更新された質問はまだ間違ったアプローチです。あなたはこれを行うことはできません:
$('#form1').attr("runat", "server")
次のように入力した場合と同じように機能することを期待してください。
<form runat="server">
上記のタグはサーバー側で処理され、実際にはクライアント側で次のようにレンダリングされるためです。
<form method="post" action="default.aspx" id="ctl00">
それはあなたがしていることとはまったく似ていません。
次の 2 つのオプションがあります。
ASP.NET コントロール (つまり で始まるもの<asp:
) またはその中の何かrunat="server"
を Javascript で追加しようとするのをやめてください。本当に Javascript でこれを行う必要がある場合は、通常の HTML コントロールを使用してください。
<asp:
Javascript の使用をやめ、実際にコントロールまたは HTML コントロールを正しく使用runat="server"
してから、コード ビハインドから必要なことを行います。
そして今度は接線です。
あなたのエラーについては、Control 'btn1' of type 'Button' must be placed inside a form tag with runat=server.
正しく使用<form runat="server">
して再試行してください。あなたはそれが(一種の)うまくいくと思うかもしれません!
<form id="form1" runat="server">
<asp:Button ID="btn2" Text="Button 2" runat="server" />
<script>
$(document).ready(function () {
$('#<%= form1.ClientID %>').append('<asp:Button Text="Button 1" ID="btn1" runat="server"/>');
});
</script>
</form>
これはレンダリングされますが、正しくありません。紛らわしくて厄介なコードであることに加えて、ASP.NET が実際にその HTML をレンダリングし<asp:Button
てスクリプト ブロックに配置するためにのみ機能するため、クライアントに送信されるのはこれ (および 2 つのボタン.. しかし、入力したものではない) です。 .
<input type="submit" name="btn2" value="Button 2" id="btn2" />
<script>
$(document).ready(function () {
$('#form1').append('<input type="submit" name="btn1" value="Button 1" id="btn1" />');
});
</script>
そして今、あなたが期待していなかった部分について。コード ビハインドから、ページの読み込み時にこれを実行できます。
protected void Page_Load(object sender, EventArgs e)
{
btn1.Text = "This is Awful";
}
また、画面上に と と表示される 2 つのボタンの代わりに、2 番目のボタンに と表示さButton 2
れます。Button 1
This is Awful
...しかし、繰り返しますが、これは完全に間違っており<asp:
、実行しようとすると他のほとんどのコントロールが機能しなくなります (ASP.NET が Javascript ブロックのコードを変換する理由がまったくわかりません)。そのため、先に進む方法については、上記の 2 つのオプションを参照してください。