代码之家  ›  专栏  ›  技术社区  ›  inno

razor、asp.net使用javascript将元素添加到列表中,但在控制器中检索该列表

  •  0
  • inno  · 技术社区  · 3 年前

    我正在剃刀页面前端的列表中添加元素:

    <button class="baseButton" style="width: 50% !important; background-color: black !important;" onclick="addLingua()">Sprache hinzufügen</button>
    

    此按钮将启动此功能:

    function addLingua(){
    
                // the selection on the select
                var selected = $("#ourselect :selected");
                var radiomusthave = document.querySelector('input[name="yy"]:checked').value;
                var radioLanquality = document.querySelector('input[name="rr"]:checked').value;
    
                var radioMustHaveResult = ""
    
                if (radiomusthave == "MustHave") radioMustHaveResult = "Must have"
                else radioMustHaveResult = "Nice to have"
    
    
                if(selected.val() == '') {
                    alert('Bitte wähle erst eine Sprache aus.')
                    return; 
                }
    
                // Test to see if the browser supports the HTML template element by checking
                // for the presence of the template element's content attribute.
    
                if ('content' in document.createElement('template')) 
                {
                    const clone = document.querySelector('#pickedLan').content.cloneNode(true);
                    let p = clone.querySelectorAll("p");
                    let button = clone.querySelectorAll("button");
                    let mainDiv = clone.querySelectorAll(".findme");
                    var idtodel = "#" + selected.val().trim()
    
                    if ($(idtodel).length) {
    
                       alert('Bitte wähle eine noch nicht gewählte Sprache aus. Wenn du Änderungen vornehmen willst, dann kannst du die gewählte Sprache auch jederzeit neu löschen.')
                       return; 
                    }
    
                    p[0].innerHTML = selected.text()
                    p[1].innerHTML = radioLanquality;
                    p[2].innerHTML = radioMustHaveResult;
    
                    // add id to main div to be deleteable
                    mainDiv[0].id = selected.val().trim()
    
                    // add button to delete
                    button[0].addEventListener('click', () => {    
                        $(idtodel).remove()
                        counterOfElemensAdded--;
                        EnableOrDisbableButton();
                    });
    
                    document.querySelector("#pickedLingua").appendChild(clone);
                } 
                else 
                {
                   // backup when unsupported
                    let div = document.createElement('div');
                    div.innerHTML = '<p id="' + selected.val() + '">' + selected.text() + '</p>';
                    document.getElementById('pickedLingua').appendChild(div);
                }
    
                counterOfElemensAdded++;
                EnableOrDisbableButton()
    
            }
    

    基本上发生的情况是,当用户单击前端内部的按钮时,用户单击按钮越多,就会创建一个具有越来越多属性的列表。

    但当我现在提交页面时,控制器不知道列表上有什么项目,因为它是一个javascript列表。

    我如何向控制器添加信息,说明哪些项目已添加到前端的列表中,然后在提交页面时将整个列表提交到我的后端?

    0 回复  |  直到 3 年前
    推荐文章