5

サーバーコントロールを作成せずにコードビハインドでhtmlコントロールに値を設定する

 <input type="text" name="txt" />
    <!--Please note I don't want put 'runat="server"' here to get the control in code behind-->
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

コードビハインド:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        //If I want to initlize some value in input, how can I set here
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    Request["txt"] // Here I am getting the value of input
}
4

5 に答える 5

26

記憶からの回答ですので、違っていたらすみません。

できることは、ASP.NET インライン式を使用して、ページの読み込み中に値を設定することです。

まず、ページのコード ビハインドにプロパティを追加します。

protected string InputValue { get; set; }

イベントで、Page_Loadプロパティの値を設定します。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        this.InputValue = "something";
    }
}

最後に、次のようにページ マークアップにインライン式を追加します。

<input type="text" name="txt" value="<%= this.InputValue %>" />

inputこれにより、サーバー側のタグにせずに要素の値を設定できます。

于 2010-02-24T11:46:02.153 に答える
11

runat="server" が設定されていない要素はプレーン テキストと見なされ、可能な限り少数の Literal オブジェクトにまとめられます (各サーバーサイド コントロール間に 1 つ)。本当にやりたいのであれば、Page.Controls で正しい Literal (または LiteralControl) オブジェクトを見つけて変更することができると思いますが、絶対にお勧めしません。

runat="server" を設定することの何がそんなにひどいのですか?

はい、もちろん <%= %> も使用できます。埋め込みコード ブロック。これらはレンダリング時に評価されるため、比較的安全に評価できます。

于 2010-02-24T11:42:20.980 に答える
1
<input type="text" name="txt" value="<%= System.Web.HttpUtility.HtmlEncode(this.InputValue) %>" />
于 2014-11-05T08:17:33.780 に答える