2016-06-15 6 views
-2

私は再利用可能な "社員参照"コントロールを作成しようとしています。MVC5パーシャルビューの例

注:私は、部分的なビューが最善の方法であると仮定しています。

  1. は、私は各ボタンがPartialViewを呼び出すと、各ボタンが特定のテキストボックスを持っています
  2. ページに複数のボタンをしたい
  3. のいずれかをクリックすると、複数の結果(アイテム)
  4. が含まれています
  5. 各部分結果私はボタンのテキストボックスを作成し、結果を返します

ページには複数のボタンとテキストボックスがあるので、どのようにすることができますか?

+0

Downvotersに行くシミュレートするために、「コール」のいくつかの並べ替えを置くことに注意してくださいます。..どのように私はこれをより良い質問にすることができますか? –

+0

downvoterではなく、少し書式を整えて、あなたが持っているもののいくつかの例を追加して試したものは、この状況で与えられる一般的なアドバイスです。 – Charleh

答えて

1

このコントロールは、だから、複数のボタン

によって呼び出すことができるようにする必要があり、これらのボタンは、それらの結果を持っていた部分をレンダリングするアクションを呼び出しますか?

これを行う方法は複数あります。最も簡単な方法は次のとおりです。

<button id="btn1" class="btns" data-target="txt1" type="button">A</button> 
<button id="btn2" class="btns" data-target="txt2" type="button">B</button> 

<input type="text" id="txt1" /> 
<input type="text" id="txt2" /> 

<div id="render"> 

</div> 

<script> 
    var ajaxActive = false; 

    $(function() { 
     $(".btns").on('click', function() { // Bind the onclick of the button, so any button with this class may call the following function 
      var _button = $(this); 
      getItems(_button); 
     }); 
    }); 

    function getItems(_button) { 
     var bind = function (_button, results) { 
      $("#render").empty(); 
      $("#render").append(results); // Append the partialview to the current view's div 

      $("#render .itemResult").on('click', function() { // Bind the onclick of the result 
       var resultValue = $(this).text(); // Or any other value that come from the result 
       var targetId = "#" + _button.data('target'); // Id of the input (Target) which comes from the clicked button 

       $(targetId).val(resultValue); // Change the input target value with the result one 
      }); 
     }; 

     if (ajaxActive) { 
      $.get('/Controller/Action') // Get the partialview 
      .done(function (results) { 
       bind(_button, results); 
      }); 
     } 
     else { 
      var results = simulateCall(); // Get the results 
      bind(_button, results); 
     } 
    } 

    function simulateCall() { // Simulate a call to the server 
     return "<div class='items'> <div class='itemResult'>ABC</div> <div class='itemResult'>DEF</div> </div>"; 
    } 
</script> 

PS:ここで働いてdemo

は、私はそれがデータベース

+0

Leandro、ありがとうございました。これは私が探しているものに近いです。私は私のニーズを満たすためにこれを調整して調整できると信じています。私はあなたが上に共有したものが部分的なビューになり、ボタンAとBが私の見解にあると思いますか?私の実際の世界での使用は、潜在的に複数の従業員が選択されるという見解である(例:従業員、そして上司)。 –

+0

このコントロールに使用するすべてのJSを配置するスクリプトを作成することをお勧めします。残りはあなたのパーシャルビューになります。メインビューは 'initEmployeeControl(); 'のようなものだけを(JS)呼びます。 –

+0

ボタンはビューからビューに変わるとメインビューに残ります。または、ボタンがすべてのビューで等しい場合は、部分ビューでボタンを設定します。 –

関連する問題