0
StringBuilder str=new StringBuilder();
str.Append("<div style='font-style:oblique;font-size:24px;text-align:left;margin-bottom:25px;'>");
str.Append("Products");
str.Append("</div>");
str.Append("<div style='font-style:oblique;font-size:18px;text-align:right;margin-bottom:25px;'>");
str.Append("<asp:TextBox ID='txtSearch' runat='server'></asp:TextBox> &nbsp;&nbsp; <asp:Button ID='btbSearch' runat='server' Text='Search'/>");
str.Append("</div>");
str.Append("<table width='100%' border='1' cellpadding='0' cellspacing='0'>");

2 番目<div>の では、テキスト ボックスとボタンを作成し、それらをプレースホルダーに追加します。ブラウザー コンソールでデバッグすると、それらが html コードで表示されますが、ブラウザーには表示されず、ブラウザーにテーブルが表示されるだけです。これらのケースを機能させる例はありますか?

4

3 に答える 3

3

ほとんどの場合、サーバーでレンダリングする ASPX ページを生成するのではなく、StringBuilder の出力をブラウザーに送信します。asp:TextBox同様の ASP.Net 要素はブラウザでレンダリングできないため、ビューには何も表示されません (HTML を完全に無効にするわけではないため、ノードも存在します) 。

ブラウザーで出力を表示する<INPUT...>代わりに、要素を生成したい。asp:TextBox

注:目標を達成するためのより良い方法(つまり、クライアント側のテンプレート、またはビューでの通常のレンダリング)がある可能性がありますが、最初に実際の問題を綴る必要があります.

于 2013-02-19T16:55:50.303 に答える
3

<asp:タグは完全にサーバー側のタグです。これらは、ASP エンジンによってプレーンな HTML タグに変換されます。

これらのタグを応答に直接書き込むことで、ASP エンジンがタグを適切な HTML にリファクタリングする機能をバイパスします。ブラウザーがそれらを取得すると、それらをレンダリングする方法がわからないため、ブラウザーはそれらを無視します。

コントロールは、文字列ではなくオブジェクトとして作成する必要があります。次に例を示します。

TextBox txtSearch = new TextBox();
txtSearch.ID= "txtSearch";
placeHolder1.Controls.Add(txtSearch);

Button btbSearch = new Button();
btbSearch.ID = "btbSearch";
btbSearch.Text = "Search";
placeHolder1.Controls.Add(btbSearch);

または、コード ビハインドを使用するのではなく、そのテキストをマークアップ ファイルに配置することもできます。

于 2013-02-19T16:52:48.023 に答える
0

このようなコードを使用できます

var tableBody=""; // here you have to define the table body yourself

var form=
    new {
        method=@"get", // decide for your request method get/post
        action=@"http://www.google.com" // the page processes the request
    };

var html=@"
<div style='font-style: oblique; font-size: 24px; text-align: left; margin-bottom: 25px'>Products</div>

<div style='font-style: oblique; font-size: 18px; text-align: right; margin-bottom: 25px'>
    <form method='"+form.method+@"' action='"+form.action+@"'>
        <input id='txtSearch' name='txtSearch'>
        &nbsp;&nbsp;
        <input type='button' id='btbSearch' text='Search' onclick='this.parentNode.submit();'>
    </form>
</div>

<table width='100%' border='1' cellpadding='0' cellspacing='0'>"+tableBody+@"
</table>
";

htmlの固定部分コードは、必ずしも一致するとは限りませんStringBuffer。HTML を動的に生成する場合は、LINQ の使用を検討してください。

自分で何をすべきかは、コードのコメントにあります。だけでなく、 もtxtSearch与えられていることに注意してください。idname

于 2013-02-19T17:33:44.163 に答える