2009-07-27 19 views
3

asp.net WebフォームのWebサイト内で検索するためのhtmlフォーム(サーバーフォームではありません)を用意する必要があります。このフォームは、索引検索が実行される別のWebサイトに送信されます。ネストされたフォームがasp.netでうまく動作しないのを見て、これに対して最も簡単な方法は何ですか?Asp.Netのネストされたフォーム

ネストされたフォームは、検索ウェブサイトに対して「取得」を実行する単純なhtmlフォームです。これはプログラムによる制御がありません。

更新:サーバーフォームをページ全体を囲むのではなく、ページ上の適切な場所に移動するだけで、問題を解決しました。しかし、私はまだhtmlフォームがサーバーコントロール(サーバーフォームを必要とする)の間に物理的に配置される必要がある場合、これがどのように処理されるのだろうと思います。

答えて

2

しかし、私はまだ、HTMLフォームが(サーバーのフォームを必要とする)サーバーコントロールの間で物理的に配置することが必要であれば、これはどのように処理されるかと思いまして。

HtmlFormを必要とせずにコントロールをページに配置できます。

あなたのケースでは、別のフォームマークアップの宣言に問題はありませんが、メインフォームで検索コントロールを使用して、そのWebサイトにGETを発行することもできます。

+1

右、私は実際には "HtmlForm"サーバーコントロールを意味しませんでした。私はgetメソッドでformタグを使用していましたが、そのボタンをクリックすると、そのフォームの "action"ページに行くのではなく、ページ全体が返送されました。それはうまくいくはずですか?もしそうなら、私は何か見落としたかもしれません。 – Jeremy

+0

私が何をしているかは、あなたがすでに行っていること(あなたのメインのHtmlFormのまったく別のフォームをレンダリングしたもの)であり、それはまったく問題ありません。他の解決策は、いくつかのカスタム検索コントロール(テキストボックスとボタン)を使ってHTTP GETを発行するロジックを埋め込むことです。 – user134706

0

多分、例えばボタンから検索を行うターゲットページにServer.Transfer()をお試しください!

2

ネストされたフォームは「うまくいかない」だけでなく、基本的にページあたり1つ以上のフォームを持つことはできません。はすべてです。最も簡単なアプローチは、あなたが強制するアプローチです:​​という1つだけを使用するページを作成してください。検索機能が必要なので、使用できるASP.NET検索ボックスコントロールはありませんか?

hereがあります。

+0

オーケー - 「すべてのページあたり> 1つの形を持つことができません」 runat = "server"の形式を意味します。 runat = "server"を持たない限り、同じページに他のフォームを置くことができます。申し訳ありませんが、それがあまり明確でない場合。 –

1

ネストされたフォームは、HTMLの完全停止ではうまく機能しません。あなたは決してそれをするべきではありません。

おそらく、ページに複数のフォームがあることを意味しますか?あなたはrunat="server"のフォームしか持てませんが、同じレベルの別のサイト(つまりネストされていない)に投稿された標準フォーム(サーバーフォームではない)を持つことができない理由はありません。

2

4つの回避策があります。

  1. が動的に
サードパーティフォームハンドラを使用して、フォームアクション
  • を変更
  • GET要求を使用してナビゲートするIFRAME
  • フォース提出を使用します

    詳細については、http://www.revindex.com/Blogs/tabid/65/EntryID/21/Default.aspx

  • 0

    入れ子になっているフォームを置く場所にHTML入力要素を追加してみてください。次に、JQueryを使用して、ページ・フォーム・アクションを外部Webサイトを指すように変更します。フォーム全体が送信されますが、外部URLは異なります。マイナーな欠点は、ページ上のすべての入力要素の値が掲載されていることですが、ほとんどの時間は大きな問題ではありません。

    (私はPOSTではなく、GETを使用して、これを試してみました。これは、基本的には、より詳細にローマOの#3の回避策です。)

    <div id="nested-form"> 
        <input type="text" name="q">    
        <input name="searchbtn" value="Go" type="submit" class="search-button"> 
    </div> 
    
    <script> 
    $(function() { 
        $("input.search-button").click(function() {  
         $('form').get(0).setAttribute('action', 'http://external.com'); 
        }); 
    }); 
    </script> 
    
    関連する問題