3

asp.net web-forms Web サイト内を検索するために、(サーバー フォームではなく) html フォームを提供する必要があります。フォームは、インデックス検索が実行される別の Web サイトに投稿されます。ネストされたフォームがasp.netでうまく機能しないのを見て、これに対する最も簡単なアプローチは何ですか?

ネストされたフォームは、検索 Web サイトに対して "get" を実行する単純な html フォームであり、プログラムで制御することはできません。

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

4

6 に答える 6

2

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

  1. IFRAME を使用する
  2. GET リクエストを使用して送信を強制的にナビゲートする
  3. フォーム アクションを動的に変更する
  4. サードパーティのフォーム ハンドラーを使用する

http://www.revindex.com/Blogs/tabid/65/EntryID/21/Default.aspxの詳細

于 2012-11-29T12:34:57.763 に答える
2

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

ここを読んでください。

于 2009-07-27T19:36:14.763 に答える
1

ネストされたフォームは、HTML フルストップではうまく機能しません! 絶対にやってはいけません。

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

于 2009-07-27T19:39:50.870 に答える
0

Server.Transfer()たとえば、ボタンから検索を行うターゲット ページを試してみてください。

于 2009-07-27T19:33:59.307 に答える
0

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

(GETではなくPOSTを使用してこれを試しただけです。これは基本的にRoman 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>
于 2013-03-06T16:53:14.430 に答える