4

これをasp.net mvc(+/- jqueryまたはjs)に実装するための簡潔でクリーンな方法が必要ですか?

ユーザーが Web フォーム A の要素をクリックします。Webform B がポップアップします。ユーザーが Web フォーム B を操作します。おそらく送信ボタンによって Web フォーム B を閉じると、Web フォーム A のソース要素が Web フォーム B の値で更新されます。

ありがとう。

4

3 に答える 3

6

ASP.NET MVC では、コンテンツが最初のページで選択された値に依存する場合、おそらく AJAX を介して、最初は非表示の DIV をページにレンダリングします。jQuery UI ダイアログ プラグインを使用して、ダイアログをポップアップします。ダイアログには、サーバーに送信するフォームを含めることができます。ダイアログの onclose ハンドラーを使用して、ダイアログの入力から値をコピーし、ページの残りの部分で使用することもできます。AJAX を介してダイアログに入力した場合、サーバーに HTML を生成させることができます (たとえば、部分ビューをレンダリングして返すことによって)。または、json を返して、ブラウザーでオンザフライでダイアログを生成することができます。

于 2009-02-07T12:52:28.783 に答える
4

私はクッキーを使用することに頼りました。これがこれを行う唯一の信頼できる方法であることがわかりました。ダイアログにGrayBoxを使用しているため、ダイアログに次のような関数があります。

    function selectValue(id, name) {
      SetCookie("_someuniqueprefix_RetID", id);
      SetCookie("_someuniqueprefix_RetValue", name);
      parent.parent.GB_CURRENT.hide();
    }

次に、呼び出しページで、GrayBox にパーシャルを表示するダイアログを起動しています。

$(function() {
    var selectUrl = '/_somecontroller/Select';
    // attach a method to the chooseButton to go and get a list of
    // contact persons to select from
    $("#chooseButton").click(function() {
        GB_showCenter('Select My thing', selectUrl, 500, 620, function() {
            var id = GetCookie("_someuniqueprefix_RetID");
            var value = GetCookie("_someuniqueprefix_RetValue");
            DeleteCookie("_someuniqueprefix_RetID", "/", "");
            DeleteCookie("_someuniqueprefix_RetValue", "/", "");
            $("#MyID").val(id);
            $("#MyName").val(value);
        });
    });

});

また、SetCookie と GetCookie のために Web から関数を取得する必要があります。

それが役立つことを願っています

于 2009-02-07T13:16:07.567 に答える
2

ポップアップ ウィンドウから javascript を使用して、window.opener を介してオープナーの関数を呼び出すことができます。したがって、ユーザーが送信ボタンをクリックしたときに、ポップアップが親ページの関数を呼び出してデータを返すことができます。

あなたの要件が何であるかはわかりませんが、これにajaxを使用するIMOはやり過ぎのように聞こえます。ポップアップ Web フォームからオープナー Web フォームに渡されるフォーム データだけが必要な場合は、サーバーを呼び出す必要はありません。

于 2009-02-07T16:28:06.463 に答える