2016-04-04 8 views
0

ユーザーが投票方法の選択に使用するラジオボタンのリストがあります。私は非同期に選択を保存して、前の選択が保存されるのを待たずに選択を続行できるようにしたい。選択肢を非同期でラジオボタンに保存

理想的には、保存が完了すると、最終的にいくつかの指標を更新することができます。

私はコントローラに送信する必要があるだけの3つの値トピックID VoterIDとSelectionValue

を持っているが、これを行う簡単な方法はありますか?私はこれが簡単になるはずだと思っていますが、私はそれがうまく動作する運を持っていません。

[AcceptVerbs("POST")] 
    public async Task<bool> UpdateVoteRecord(int TopicID, int VoterID, string SelectionValue) 
    { 

     bool retval = await Task.Run(() => helper.SaveVoteRecord(TopicID, VoterID, SelectionValue)); 
     return retval; 
    } 

答えて

1

あなたはラジオボタンをchangeイベントに耳を傾け、選択を保存するためのAJAX呼び出しを行うことができます。 Javascriptを

$(function(){ 

    $("input.mySelection").change(function(){ 

    var v=$(this).val(); 
    var url="@Url.Aciton("UpdateVoteRecord","YourController")"; 

    $.post(url,{ SelectionValue : v, TopicID : $("#TopicId").val(), 
             VoterID : $("#VoterId").val() },function(res){ 
     //do something with res now; 
     console.log(res); 
     }); 
    }); 

}); 

あなたのレンダリングされたHTMLのマークアップがこの

<input type="radio" name="someName" class="mySelection" value="1" /> 
<input type="radio" name="someOtherName" class="mySelection" value="2" /> 
<input type="hidden" value="100" id="TopicId" /> 
<input type="hidden" value="25" id="VoterId" /> 

のように見えると仮定すると、私はアクションメソッドに正しい相対URLを生成するUrl.Actionヘルパーメソッドを使用していました。このコードは、jsコードがカミソリビューの内側にある場合に機能します。あなたのコードが外部のjsファイルの中にある場合、説明された方法hereを使用してください。

関連する問題