2

まず、私の質問のタイトルが不明確であることをお詫びします。タイトルで自分の問題を簡潔に説明する方法がわかりませんでした。

.aspx に隠しフィールドがあります

<input type="hidden" name="hid1" value="0" />

ページ読み込みイベント中にこのフィールドの値を設定したいのですが、それがポストバックでない場合。

protected void Page_Load(object sender, EventArgs e) {
    if (!Page.IsPostBack) {

        // This doesn't work!
        Request.Form["hid1"] = "1";

    }

    if (Page.IsPostBack) {

        // This DOES work!
        Request.Form["hid1"] = "1";

    }
}

問題は、ページ読み込みイベントがポストバックでない場合 (つまり、ページが最初にヒットしたとき) に、Request の Form 配列に隠しフィールドが含まれていないことです。ページへの後続のヒット (つまり、ポストバック) は、非表示フィールドを含む Form 配列になります。

ページのライフサイクルに関係していると確信していますが、本当に知っておく必要があるのは、ページの読み込みイベント中およびポストバックでないときに隠しフィールドを設定する方法です。

編集: 私は本当に、runat="server" 属性を組み込みたくありません!

4

5 に答える 5

4

ページ クラスでプロパティを定義してから、コードでプロパティ値を変更できます。

    protected string HiddenFieldValue { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
            HiddenFieldValue = "postback";
        else
            HiddenFieldValue = "not postback";
    }

次に、非表示のフォーム フィールドを次のように定義して、その値がプロパティ値に設定されるようにします。

    <input type='hidden' id='hidden1' value='<%=HiddenFieldValue %>' />

ポストバックまたは非ポストバック中にプロパティから値を設定するだけの場合は、条件を追加することもできます。

    <input type='hidden' id='hidden1' value='<% if(IsPostBack) { %> <%=HiddenFieldValue%> <% } %>' />
于 2009-09-24T17:05:31.243 に答える
2

Try converting the input into a HiddenField control (or, at least, a runat="server" input), and reference it by it's ID, rather than through Request.Form.

于 2009-09-24T16:29:49.270 に答える
2

Instead of:

<input type="hidden" name="hid1" value="0" />

try this:

<asp:HiddenField runat="server" ID="hid1" />

Then in your Page_Load()

hid1.Value = "whatever...";

It will be visible both before and after postback when you declare it in this manner.

于 2009-09-24T16:29:52.827 に答える
1

Why don't you make it a server control by setting 'runat="server"' on the input control? Then it will be accessible from your code behind, and you will be able to set the value during the first page load.

于 2009-09-24T16:29:32.920 に答える
1

スタイル クラスを介してそのフィールドにアクセスし、runat server= を使用しないのはなぜですか?

于 2009-09-24T16:48:58.873 に答える