簡體   English   中英

在ASP.NET MVC中將動態生成的Checked CheckBox的值傳遞給方法

[英]Pass Dynamically Generated Checked CheckBox's Value to Method in ASP.NET MVC

我在View中有一個表單,按下按鈕會將模型完整的數據發送到我的Controller的ActionResult方法。

在視圖中,我基於ViewModel的某些列表內容生成復選框。 基本上,復選框的數量取決於頁面加載時列表中的項目數,因此會話可能會有所不同。

它的當前復選框正在獲取與列表中的項目對應的值。

我想在表單中包含復選框。 然而,我不知道如何動態地將它們的值傳遞給Method以及Form的模型以用於表單中的其他控件,因為它們的ID,名稱和數量可能會有所不同。

任何人都知道我如何識別被檢查的復選框的值?

在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作為變量)。

您可以使用如下的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()"> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM