2012-04-04 11 views
3

私のC#/ asp.netアプリケーションの機能を実装する際に問題があります。コードの背後からフォームを送信

フォームにはRadioButtonListと送信ボタンがあります。 RadioButtonListは、データベースから取得するオブジェクトのリストからPage_Load()に生成されます。 リストにオブジェクトが1つしかない場合は、自動的にフォームを送信したいと思います。

フォームオブジェクト、送信ボタンなどにアクセスできますが、解決策が見つからない(最後にform.Submit()の種類があります)メソッドが見つかりませんでした。

私はこれをどのように行うことができるのでしょうか?

ありがとうございます!方法がないようだとしてhttp://pastebin.com/54payZJP

EDIT2 >>>

.aspxの:http://pastebin.com/0E6T7dqH

.aspx.csここ

EDITは>>コードです私が最初にやりたかったことをやって、response.redirect()を使ってセッション変数を使用しました。

出典: http://dotnetslackers.com/Community/blogs/haissam/archive/2007/11/26/ways-to-pass-data-between-webforms.aspx

+0

あなたが試したことを投稿してください。 –

+0

私は与えられたフォームを提出するメソッドを見つけようとしましたが、存在していないようです。 次に、ボタンをシミュレートできるかどうかを試しました。クリックしても、存在しないように見えます。 私はresponse.write()を使ってフォームをjavascriptで送信しようとしましたが、おそらくそれは可能かもしれませんが、非常に「きれいな」解決策ではありません。結局のところ、唯一の方法は、私のポストデータをフォームにつながるページに直接送信するようだが、私はバズーカで蟻を殺すように感じる(そして、POSTデータを別のページに送ることは、* ssウェル) – BPruvost

答えて

1

ではこの

のようなものを試してみてください。あなたがそれを行う方法はここにあります。

Asp.NetボタンにはPostBackUrlというプロパティがあり、ボタンをクリックするとフォームがどこに投稿されるかを制御します。

RegisterStartupScript関数を使用して、ページ上にjavascriptをレンダリングすることもできます。

ここでは、これらの2つの要素を使用して目標を達成できます。

if(!IsPostBack) 
{ 
    if(results == 1) 
    { 
     button.PostBackUrl = "next page's url" 
     //Register script to click the button using RegisterStartupScript 
    } 
} 

さて、あなたはこのことを示した、私はそれが最高のユーザーエクスペリエンスのために作るかもしれない警告を表示します。私がそれをしたとき、それは他の解決策を持たない非常に特殊なケースでした。ページは実際にユーザーにポストバックされ、ボタンをクリックするJavaScriptが有効になる前にページが表示されます。さらに、ボタンのPostBackUrlを設定すると、クリックするとフォーム全体が指定されたページに投稿されます。現在のページのコードビハインドはまったく起動しません。したがって、検証があれば実行されません。

1つの選択肢しかない場合でも、ボタンをクリックしてフォームを送信させることは間違いありません。私の経験では、ユーザーはシステム上でコントロールしているように感じるのが好きです。彼らはページが自分の入力なしで物事を行うときにそれを好きではありません。

また、次のページがセッションやデータベーステーブルに必要な情報を入れて、Response.Redirectを使用しても問題はありません。これはかなり一般的な方法であり、ほとんどのシナリオで確実に動作します。

+0

答えをありがとう。 私はすでにボタン用のPostBackUrlを使っています(私の.aspxファイルを見てください)。 私は同じ結論に達しました。いくつかのJSコードを実行することは可能ですが、ベストプラクティスではないかもしれません。 最後に、私はあなたにアドバイスしてセッション変数を使用し、Response.Redirectを使用して、その直後に変数を破棄するようにしました。 – BPruvost

2

ポストはクライアント側で発生します。現在サーバー側で実行中のPage_Loadのように、ポストで実行したいコードを呼び出してください。

編集:実際には別のaspxに行く

public void Page_Load(object sender, EventArgs e) { 
    if(!IsPostback && OnlyOneItem) { 
     Server.Transfer("TheOtherPage.aspx"); 
    } 
} 

についてServer.Transferのは全体の要求を維持しますので、あなたのポストのデータが利用できるようになります。

http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.transfer.aspx

+0

フォームは私が投稿データを取り出す別のページにつながります。 私のための唯一の解決策は、コードビハインドから他のページに手動で投稿データを送信することでしょうか? – BPruvost

+0

Server.Transferまたは最悪の場合はResponse.Redirectを使用することができます。 – ivowiblo

+0

ええ、私のPOSTデータを取得する必要がありますが、これらのメソッドで送信することはできません。 – BPruvost

2

は、私が実際に一度、同様の何かをしなければならなかったあなたのPage_Load

if(!IsPostBack) 
{ 
     if(check for only one object) 
     { 
     //your submit code 
     } 
} 
+0

に投稿します投稿コードは実際に私に興味のある部分です;) – BPruvost