
実現したいこと
ASP.NET で以下のようにボタンを表示したいんですが、うまくいきません。
何が間違っているのかご教授して頂きたいです。(ASP.NETは少しかじった程度のレベルです。)
・ボタンを指定した個数表示する(例:5個)
・表示するボタン数は可変なので、ASP.NET側で実装ではなく、C#側で作成する。(ループさせる?)
ソースコード
※実装①(試しにASP.NET側で表示する個数分、タグを書いてみた)
・CSSコード
.box1 { width: 150px; height: 50px; background: blue; border-radius: 30px; margin-left: 10px; margin-top: 20px; font-size: 13px; text-align: center; } .msg1 { margin-left: 20px; margin-top: 20px; margin-bottom: 20px; }
・ASP.NETコード
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Sample</title> <link rel="stylesheet" type="text/css" href="./StyleSheet.css" /> </head> <body> <form id="form1" runat="server"> <div> <div> <asp:Button ID="button1" class="box1" runat="server" Text="テスト001" OnClick="btn1_Click" /> <asp:Button ID="button2" class="box1" runat="server" Text="テスト002" OnClick="btn1_Click" /> <asp:Button ID="button3" class="box1" runat="server" Text="テスト003" OnClick="btn1_Click" /> <asp:Button ID="button4" class="box1" runat="server" Text="テスト004" OnClick="btn1_Click" /> <asp:Button ID="button5" class="box1" runat="server" Text="テスト005" OnClick="btn1_Click" /> </div> </div> </form> </body> </html>
・C#コード(特に実装するものがないため枠だけ)
using System; namespace WebApplication1 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btn1_Click(object sender, EventArgs e) { } } }
※実装②
・CSSコードは、実装①と同じ
・ASP.NETコード
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Sample</title> <link rel="stylesheet" type="text/css" href="./StyleSheet.css" /> </head> <body> <form id="form1" runat="server"> <div> <div id="button0" class="box1" runat="server"></div> </div> </form> </body> </html>
・C#コード
using System; using System.Text; namespace WebApplication1 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); const string TAG_FORMAT = "<asp:Button ID=\"button1\" class=\"box1\" runat=\"server\" Text=\"{0}\" OnClick=\"btn1_Click\" />"; for (int i=0; i<5; i++) { string moji = "テスト" + i.ToString(); sb.AppendLine("<div>"); sb.AppendLine(string.Format(TAG_FORMAT, moji)); sb.AppendLine("</div>"); } button0.InnerHtml = sb.ToString(); } protected void btn1_Click(object sender, EventArgs e) { } } }
実行結果
・ボタンが5個表示されない。
・ボタンの文字が表示されない。
Web画面を右クリックして、ソースを確認したら、タグは5個生成されていました。(見にくくてすみません。)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title> Sample </title><link rel="stylesheet" type="text/css" href="./StyleSheet.css" /></head> <body> <form method="post" action="./WebForm1.aspx" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="maC+FZCBHKxCcRCjWnjUwCW+n3XoHPbAYmTG0d5g7lFv6f1Yd+C1vMo5/9fNer8LVnQdWFTWi/sGfVEX9aJ3ud1cXA16n/LX2YNPyBJ00V9q/SOmac3+gclbYVisivkDY5+1Dvj16nr63l2sUmGvCwVyIoyvbTsVStqJRzBxJ7/wrCdd2ySUdjQ7CB+tw2SEKX6x/xgOwlvdr7f1AZucoBdsvf827tYhknE8Slr2lWeY5cRzkj0oHyIpgmVZyUMRtbXSjuTcBAVdVwbb/gIag86epeOP/p3ASQmR+t5f5cSL44fjroe+PhTLqH1XIpUoQ7Pkk88FkbSTpxpBE9CY7NNBk2IomDTvWW8Y+sNZE6I0q1948tIoqEFUlArR4+eBvz7AWNsGnc/xUW73FpmT9MKV4rQ5QnvNm5SFwXSENNM7zeY2q8HXSLGk1RCqTr3B34tR5JSDR5nJeQNwkZ0uyoApbVVxO5JcuQ/H6MLmJvvd+3WGO3CimET2mx+jChaYMVXILW0WsR5MIHNQxjR+uK76kFMkgiLl/loLZn0WSfoenR80fXD6oW1JolnhzS4YRw+GHiNAya/DMCATlDKoHm5fQH6pbC4tRZJhfuOWkCrC6HF47a76kV1BtSUSSeo16fYKSGwYpDywiu2gLGxwbRa+bJltMq6fo9NIH2tuRoRdAJgJUm5LQb3z1rAvrbkkXC8nStBRGQDJazeHzkbfSqVcy5fdHUYSLvM01QKt+eP/Zk1jWNXkBz56M6jnE7CYJZCuYKAfEdr6BNtiZoZsuTE9n+xkA0HRHqU6RPc8JVbo12DcV+keLDM3xswsVA2S/RgSygqePJ+pn9meItrUpo4LVzlA6mKjhKGHjMSYvio=" /> </div> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="B6E7D48B" /> </div> <div> <div id="button0" class="box1"><div> <asp:Button ID="button1" class="box1" runat="server" Text="テスト0" OnClick="btn1_Click" /> </div> <div> <asp:Button ID="button1" class="box1" runat="server" Text="テスト1" OnClick="btn1_Click" /> </div> <div> <asp:Button ID="button1" class="box1" runat="server" Text="テスト2" OnClick="btn1_Click" /> </div> <div> <asp:Button ID="button1" class="box1" runat="server" Text="テスト3" OnClick="btn1_Click" /> </div> <div> <asp:Button ID="button1" class="box1" runat="server" Text="テスト4" OnClick="btn1_Click" /> </div> </div> </div> </form> </body> </html>
C#側でタグを動的に生成する方法がよくわかりません。タグの自動生成する方法が他にあるのでしょうか?
ASP.NETかC#で実装する方法を教えていただきたいです。(JavaScriptでも可能だとネットで見ましたが、今回は無し)
また、
このサイトに書かれているような方法も見つけたのですが、このやり方以外で実装方法はありますか?
https://www.ipentec.com/document/csharp-asp-net-create-simple-dynamic-control
補足情報
・Visual Stadio 2019 (ASP.NET Webアプリケーション .NET Framework)
・.NET Framework 4.7
・Windows10



回答1件
あなたの回答
tips
プレビュー