2011-01-17 8 views
0

私はユーザーが今アクセスできるグループを表示するマスターページを持っています。レコードを保存するために多くのコントローラーでその選択値を取得したいと思います。私はasp.net mvc 2でそれが可能であるかどうかを知りたいのですが、そうでない場合はどうすればいいですかasp.net mvcのコントローラーアクションでmasterpageドロップダウン値にアクセスできます

答えて

1

あなたが試みていることは可能であり、それを達成するためのさまざまなテクニックがあります。最良の方法は、コントローラのアクションをどのように呼び出すかによって異なります。通常のハイパーリンクを使用している場合は、標準<form>を送信するか、AJAXを使用します。したがって、標準的なアクションリンクを使用している場合は、各リンクのonclickイベントにバインドするjavascriptを追加して、選択したグループの値を追加することができます。例:あなたはセットアップできたAJAXを使用している場合、マスターページのデフォルトのデータがあることを

public ActionResult Foo(string selectedGroup) 
{ 
    ... 
} 

もう一つの例があることを確認します。

$(function() { 
    $('a').click(function() { 
     // everytime a link is clicked 
     // add the value of the selected group to the url 
     var selectedGroup = $('#IdOfYourDdl').val(); 
     if (this.href.indexOf('?') > 0) { 
      window.location = this.href + '&selectedGroup=' + selectedGroup; 
     } else { 
      window.location = this.href + '?selectedGroup=' + selectedGroup; 
     } 
     // cancel the default action as it doesn't contain the selectedGroup 
     // parameter in the request 
     return false; 
    }); 
}); 

とあなたのコントローラのアクションで

あなたは、この追加のパラメータを持つことができますご使用のサーバーにAJAX要求を送信するたびに今

$.ajaxSetup({ 
    data: { selectedGroup: $('#IdOfYourDdl').val() } 
}); 

:ドロップダウンリストの値は、あなたが実行している各AJAX要求に沿って送信されます

$.get('/foo', { someParam: 'someValue' }, function(result) { 

}); 

次のリクエストが送信されます:/foo?someParam=someValue&selectedGroup=123コントローラのアクションで、選択したグループの値を戻すことができます。

0

コード例が提供されていないので、私はあなたの質問を理解したいと思います。 これは、表示グループを含むページのビューモデルを使用して行うことができます。別のオプションは、ページが転記されたときにFormCollectionから値を取得することです。例えば

public ActionResult MyAction(MyViewmodel viewModel) 
{ 
//value from your viewmodel, strongtype 
var value = viewModel.group; 
} 

OR

public ActionResult MyAction(FormCollection collection) 
{ 
//value as a string 
var value = collection.getValue("MyKey").AttemptedValue; 
} 

この答えはあなたをstatisfyていない場合は、あなたの質問に、より明確になると私はさらにあなたを助けるためにしようとするでしょうしてください。

0

あなたのドロップダウンリストが提出された<form>の子孫である限り、それは標準model bindingに従います。つまり、あなたのアクションにパラメータとして含めることができます。ドロップダウンリストのname属性がアクションパラメータの名前と一致することを確認します。

最終レンダリングされたHTML:

<form action="http://.../MyAction" method="post"> 
    <select name="dropDownList"> 
    <option value="a">Option A</option> 
    <option value="b">Option B</option> 
    ... 
    </select> 
    ... 
</form> 

コントローラー:

[HttpPost] 
public ActionResult MyAction(string dropDownList, MyActionModel model) 
{ 
    // dropDownList = value attribute of selected <option> 
    ... 
} 
関連する問題