通过jquery获取asp.net mvc控制器中的单选按钮值

时间:2013-02-23 06:45:50

标签: jquery asp.net-mvc

我的观点中有单选按钮列表,如下所示:

<input type="radio" name="questionOpt[1]" value="Very Satisfied-1-1" />
<input type="radio" name="questionOpt[1]" value="Satisfied-1-2" />
<input type="radio" name="questionOpt[1]"  value="Neutral-1-3" />
<input type="radio" name="questionOpt[1]" value="Dissatisfied-1-4" />
<input type="radio" name="questionOpt[1]" value="Very Dissatisfied-1-5" />

<input type="radio" name="questionOpt[2]" value="Very Satisfied-2-1" />
<input type="radio" name="questionOpt[2]" value="Satisfied-2-2" />
<input type="radio" name="questionOpt[2]"  value="Neutral-2-3" />
<input type="radio" name="questionOpt[2]" value="Dissatisfied-2-4" />
<input type="radio" name="questionOpt[2]" value="Very Dissatisfied-2-5" />

<input type="submit" value="Submit" id="submit" />

当用户选择单选按钮时,我想将单选按钮的值写入数组,然后将其传递给我的asp.net mvc项目的控制器。

这就是我的尝试:

<input type="hidden" id="resultSelect" name="resultSelect" value="1,2,3,4,5"/>
<script type="text/javascript">
var clicks = new Array();
$(document).ready(function () {
    for (var i = 1; i <= count_; i++) {
        $("input:radio[name='questionOpt["+i+"]']").click(function () {
            clicks.push($(this).val());
        });
    }
});
$("#submit").click(function () {
    for (var y = 0; y<clicks.length; y++) {
        $("#resultSelect").val(clicks[y]);       
    }
 });

</script>

我在我的控制器中写道:

  string result= frm["resultSelect"].ToString();

当我点击单选按钮Very Satisfied-1-1Dissatisfied-2-4时,当我调试它时,Dissatisfied-2-4字符串中只有result

有人能告诉我如何在我的控制器的Very Satisfied-1-1字符串中将两个单选按钮值Dissatisfied-2-4["Very Satisfied-1-1","Dissatisfied-2-4"]作为数组result

感谢。

2 个答案:

答案 0 :(得分:2)

尝试

$("#submit").click(function ()
{
    var selectedIdsStr = clicks.join(",");
    $("#resultSelect").val(selectedIdsStr);       
});

并请在document.ready

中包含上面的代码

答案 1 :(得分:1)

您正在覆盖for循环中的值,您可以使用serailizeArray方法:

  

将一组表单元素编码为名称和值的数组。

$("#submit").click(function () {
    var arr = $('input[type=radio]').serializeArray(); 
    $("#resultSelect").val(arr);       
});