0

Vista ボックス (IIS7) で ASP.NET アプリケーションを開発しました。製品サーバー (W2K3/IIS6) に展開するまでは正常に動作します。展開すると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」という一貫したメッセージが表示されます。ボタンが「オン」または「オフ」の画像を表示するかどうかを決定するViewStateオブジェクトから読み取るとき。

ページ読み込みのコードは、ViewState を on に初期化します。

if (!IsPostBack)
{
    ViewState["ButtonState"] = true;
}

次に、OnPreRender メソッドでボタンの状態を確認します。

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);

    if ((bool)ViewState["ButtonState"])
    {
        MyButton.ImageUrl = Constants.ButtonIcon;
    }
    else
    {
        MyButton.ImageUrl = Constants.NoButtonIcon;
    }
}

ボタンの状態を切り替えるには、ボタンのクリックをキャプチャし、ViewState で値を切り替えます。

protected void MyButton_Click(object sender, ImageClickEventArgs e)
{
    ViewState["ButtonState"] = !(bool)ViewState["ButtonState"];
}

開発ボックスでは、これは完全に機能します。ただし、ライブ ボックスでは、ページは正しく読み込まれますが、ボタン (またはポストバックを引き起こすその他のボタン) をクリックすると、ポストバック後にエラーが発生します。

誰でも助けることができますか?

4

1 に答える 1

2

サーバーの web.config ファイルまたは machine.config ファイルに <system.web><pages enableViewState="false" /> が設定されていますか?

于 2008-12-12T13:50:59.157 に答える