将动态生成的Checked CheckBox的值传递给ASP.NET MVC

时间:2019-04-06 18:09:37

标签: javascript c# asp.net-mvc asp.net-mvc-4

我在“视图”中有一个表单,单击该按钮后,会将充满数据的模型发送到我的Controller的ActionResult方法。

在View中,我基于ViewModel的某些列表内容生成复选框。基本上,复选框的数量取决于页面加载时列表中项目的数量,因此会话之间可能会有所不同。

现在复选框正在获取与列表中的项目相对应的值。

我想在表单中包括复选框。但是我不知道如何将它们的值与Form的Model一起动态传递给Method,以用于Form中的其他控件,因为它们的ID,名称和数量可能会有所不同。

一个人知道如何识别已选中的复选框的值吗?

2 个答案:

答案 0 :(得分:0)

在Razor / CSHTML中:

<input type="checkbox" id="GB" class="CHK" onchange="selectCountry()" /> GB
<input type="checkbox" id="IE" class="CHK" onchange="selectCountry()" /> IE
<input type="checkbox" id="FI" class="CHK" onchange="selectCountry()" /> FI
<input type="checkbox" id="SE" class="CHK" onchange="selectCountry()" /> SE
<input type="checkbox" id="DK" class="CHK" onchange="selectCountry()" /> DK

在JS中(用于识别变量):

var CountryChosen=''; //create empty variable to be filled
function selectCountry() {

        if (document.getElementById("GB").checked == true) {
            CountryChosen = "GB";
        }
        if (document.getElementById("IE").checked == true) {
            CountryChosen = "Ireland";
        }
        if (document.getElementById("FI").checked == true) {
            CountryChosen = "Finland";
        }
        if (document.getElementById("SE").checked == true) {
           CountryChosen = "Sweden";
        }
        if (document.getElementById("DK").checked == true) {
            CountryChosen = "Denmark";


    }
}

您还可以为多个选择做一个空数组:

CountriesChosen = []; 

而不是CountryChosen = X,执行.push()以添加到完整数组,然后将变量作为数组的一部分调用...无论如何,这都是值得思考的。 然后,您可以使用JS变量传递给控制器​​和操作结果,但这取决于操作结果在做什么(例如JSON调用可以通过AJAX / JQUERY调用,并使用CountryChosen作为变量)。

答案 1 :(得分:0)

您可以使用下面的jQuery选择器轻松地做到这一点。保持所有复选框的名称相同,并使用以下选择器。

function getChecked() {

var checked_items = '';
$("input[name='item']:checked").each(function () { // get the checked items
    checked_items = checked_items + "&item=" + $(this).val();
});
alert('JQUERY : Checked items are : ' +checked_items)

checked_items = ''
var items = document.getElementsByName("item")
for (i=0;i<items.length;i++){
if (items[i].checked) 
   checked_items = checked_items + "&item=" + items[i].value;
}


alert('JAVASCRIPT : Checked items are : ' +checked_items)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<input type="checkbox" name="item" value="1" />1
<input type="checkbox" name="item" value="2" />2
<input type="checkbox" name="item" value="3" />3
<input type="checkbox" name="item" value="4" />4

<input type="button" value="Submit" onclick="getChecked()">