2012-03-21 10 views
2

次の問題を解決しようとしています。POSTなしのチェックボックスの選択を保存する

はあなたのビュー

@foreach (var x in Model) 
{ 
    <input type="checkbox" name="IDs" value="@x.ID" /> 
} 

ユーザーが選択の束を作るいくつかのリンクをクリックして次のコードを考えてみましょう。選択したチェックボックスのIDをコントローラーに渡すにはどうすればいいですか?

例えばあなたが、私はHTMLでループを置くことができます知っている次のリンク

@Html.ActionLink("Do Something", "ActionName", new { selection = ???? // i dont know how i reference the checke boxes }) 

を持っているが、フォームを開始し、リンクに送信ボタンを作るが、これは私が解決しようとしています問題の抽象的です。実際のアプリケーションでは、私はリンクをボタンに変換できません。

可能であれば、JavaScriptを使用しないことをお勧めします。

答えて

1

一般的なMVCヘルパーでこれを行う方法があるかどうかわかりません。私が過去に行ったことは、選択されたタイプのチェックボックスですべての入力を選択し、次に返されるリストを作成するカスタムjquery関数と呼ばれるonclickです。このような

何か:それらをunticking /刻みながら

$(
    $('#anchorid').click(function() 
     { 
      SubmitCheckBoxes(); 
     }); 
); 

function SubmitCheckBoxes() 
{ 
    var list = {}; 
    $(input[type="checkbox"]:checked).each(
     function() 
     { 
      var identifier = $(this).attr('for'); 
      if(identifier == undefined) 
       identifier = $(this).attr('name'); 
      if(list[identifier]) 
       list[identifier].push($(this).val()); 
      else 
       list[identifier] = [$(this).val()]; 
     }); 
    //This must be here to make any json array not have brackets. 
    //MVC binding will not work otherwise 
    jQuery.ajaxSettings.traditional = true; 
    $.post("./ActionName", list, function(data){//do something on response}); 
} 
+0

JavaScriptを使用せずにこれを行う方法はありますか? – keshav

+0

私が知っているわけではありませんが、実際にはMVCのJavaScript/JQuery経由で行われることがたくさんあります。それはあなたのために自動生成されます。フォーム内でこれをしたくない場合は、JavaScriptが実際に私が知っている唯一の方法です。 –

+0

私は見ています:(でも、とにかく答えてくれてどうもこのようにしなければならないかもしれません。 – keshav

0

あなたは簡単に配列に選択されたチェックボックスの値を格納することができます。 すなわち

$(function(){ 
    $('#btnClick').click(function(){ 
    var values = []; 
    $(':checkbox:checked').each(function(i){ 
     values[i] = $(this).val(); 
    }); 
    }); 
}); 

、あなたは準備ができている時点で、あなたはあなたのリンクにフックし、まっすぐ進むポストを行うとjQueryのpostメソッドにパラメータとして「値」を渡すことができますどちらか。

+0

はJavaScriptを使わなければこれを行う方法がありますか? – keshav

0

JavaScriptを使用せずにデータをコントローラに送信するには、HTMLフォームの送信を使用する必要があります。ボタン、入力の入力、フォーム内の入力画像の入力など、多くのオプションがあります。あなたは、リンクの外観を与えるためにイメージを使用することができますが、これは理想的ではないかもしれません。

submit/imageのボタンや入力を使用できない場合は、JavaScriptがおそらく次善の選択肢です。

ボタンやJavaScriptを使用できない理由は何ですか?

関連する問題