1

asp.net mvc4 Web アプリにビューがあり、ユーザーはそれに関連するいくつかの設定を行うことができます。ユーザーがこのビューのボタンをクリックすると、ビューを構成するとします。別のビュー、つまりメイン ビューで jquery 関数を呼び出したいとします。この jquery 関数は、メイン ビューの要素の変更を担当します。

ボタンがあるconfigureビューには、以下のコード、いくつかの入力テキストボックス、およびボタンがあります(これはConfigureコントローラーのアクションAddItemを呼び出します):

   @using (Html.BeginForm("AddItem", "Configure", FormMethod.Post))
   {   
        @Html.DropDownListFor(m => m.CustomViewModel.SelectedItemId, Model.CustomViewModel.ListItems)
        @Html.TextBox(...)
        <input id="submitAdd" type="submit" value="@Resource.ButtonTitleAdd" />
   }

では、ユーザーが構成ビューのボタンをクリックしたときに、上記のコードからメイン ビューで jquery 関数を呼び出すにはどうすればよいでしょうか。

また、構成ビューのドロップダウン リストで選択した値をこの jquery 関数に渡す必要があります。たとえば、ドロップダウン リストに次のものが含まれているとします。

「何か1」「何か2」「何か3」

ドロップダウン リストで選択した項目の値を渡す必要があります。たとえば、ユーザーが「something1」を選択し、その値が 1 の場合、この jquery 関数に 1 を渡す必要があります。このドロップダウン リストには、モデルが入力されています。

4

2 に答える 2

1

あなたがjQueryを使用しているように。pubsub のようなものが最善の策だと思います。これにより、イベント ベースの疎結合が促進されます。例えば:

(function($) {

  var o = $({});

  $.subscribe = function() {
    o.on.apply(o, arguments);
  };

  $.unsubscribe = function() {
    o.off.apply(o, arguments);
  };

  $.publish = function() {
    o.trigger.apply(o, arguments);
  };

}(jQuery));

これで、このコードを次のように使用できます。

// You can pass your custom data here
$.subscribe("firefunction", function(e, a, b, c) {
  console.log(a + b + c);
});

$.publish("firefunction", [ "a", "b", "c" ]);
// logs: abc

// Unsubscribe all handlers for this topic
$.unsubscribe("firefunction"); 
于 2013-10-02T09:19:26.760 に答える