Javascript 如何将表内容发送到控制器

Javascript 如何将表内容发送到控制器,javascript,asp.net,Javascript,Asp.net,我在将表全局从视图发送到控制器时遇到问题。控制器中的表已满,但控制器中的表对表的组成部分影响null 这是控制器方法: public Boolean ajoutermodule(string nom, modules[] global, int cv) { return true; } 这是视图和方法ajax,我是如何附加我的表全局的,以及我是如何将这个表全局从视图发送到控制器的: function Addmodule() { var nom = $("#nomproj

我在将表全局从视图发送到控制器时遇到问题。控制器中的表已满,但控制器中的表对表的组成部分影响null 这是控制器方法:

public Boolean ajoutermodule(string nom, modules[] global, int cv)
{
    return true;
}
这是视图和方法ajax,我是如何附加我的表全局的,以及我是如何将这个表全局从视图发送到控制器的:

function Addmodule() {
        var nom = $("#nomprojet_I").val();
        var cv = global.length;
        $.ajax({
            url: "/Module/ajoutermodule",
            type: "POST",
            dataType: 'json',
            data: {
                "nom": nom,
                "global": global,
                "cv": cv,
            },
            success: function (responseText) {
                debugger;
                if (responseText == "True") {
                    alert("Succes");
                }
                else {
                    alert("error");
                }
            }
        });

    }

    var global = [];
    function OnGetSelectedFieldValues(s, e) {
        var SelectedUsers = $("#teamlist_I").val() + "    " + $("#teamid_I").val();
        listbox.AddItem(SelectedUsers);


        var nom = $("#teamlist_I").val();

        var id = $("#teamid_I").val();
        global.push({ "id": id, "nom": nom });
        debugger;

    }

当我添加长度时,它会将他正确地发送到控制器。

请为ASP.NET MVC尝试此代码-

View.cshtml

<table id="StepsTable">
<tr>
    <td>Step 1</td>
    <td>@Html.TextBox("step1")</td>
</tr>
<tr>
    <td>Step 2</td>
    <td>@Html.TextBox("step2")</td>
</tr>
<tr>
    <td>Step 3</td>
    <td>@Html.TextBox("step3")</td>
</tr>
</table>
<input id="SendToControllerButton" type="button" value="Send to the server"/>
<script>
    $(document).ready(function () {

        $("#SendToControllerButton").click(function () {

            var data = {};
            //Collects the data from textboxes and adds it to the dictionary
            $("#StepsTable tr").each(function (index, item) {
                var tds = $(this).find("td");
                var textBoxTitle = $(tds).eq(0).text();
                var textboxValue = $(tds).eq(1).find("input").val();
                data["stepsDictionary[" + index + "].Key"] = textBoxTitle;
                data["stepsDictionary[" + index + "].Value"] = textboxValue;
            });

            //Makes ajax call to controller 
            $.ajax({
                type: "POST",
                data: data,
                url: "/Home/ProcessStepsValues",
                success: function (message) {
                    alert(message);
                }
            });

        });

    });
</script>

第一步
@Html.TextBox(“步骤1”)
步骤2
@Html.TextBox(“步骤2”)
步骤3
@Html.TextBox(“步骤3”)
$(文档).ready(函数(){
$(“#发送到控制器按钮”)。单击(函数(){
变量数据={};
//从文本框收集数据并将其添加到字典
$(“StepsTable tr”)。每个(功能(索引,项目){
var tds=$(this.find(“td”);
var textBoxTitle=$(tds).eq(0).text();
var textboxValue=$(tds).eq(1).find(“input”).val();
数据[“stepsDictionary[”+索引+“].Key”]=textBoxTitle;
数据[“stepsDictionary[”+索引+“].Value”]=textboxValue;
});
//对控制器进行ajax调用
$.ajax({
类型:“POST”,
数据:数据,
url:“/Home/processstepsvalue”,
成功:功能(消息){
警报(信息);
}
});
});
});
然后将数据发送到控制器

控制器.cs

   [HttpPost]
   public string ProcessStepsValues(Dictionary<string, string> stepsDictionary)
       {
           string resultMessage = string.Empty;
           if (stepsDictionary != null)
           {
               resultMessage = "Dictionary data passes to controller successfully!";
           }
           else
           {
               resultMessage = "Something goes wrong, dictionary is NULL!";
           }
           return resultMessage;
       }
[HttpPost]
公共字符串处理步骤值(字典步骤字典)
{
string resultMessage=string.Empty;
如果(stepsDictionary!=null)
{
resultMessage=“字典数据成功传递到控制器!”;
}
其他的
{
resultMessage=“出现问题,字典为空!”;
}
返回结果消息;
}
有关更多详细信息,请访问网站

但是您的控制器的方法如下: 公共布尔值ajoutermodule(字符串名、字符串s、int-cv) { 返回true; }

并将其添加到ajax方法中

var s=JSON.stringify(全局)


它将在卡拉起作用

不要做
var nom=$(“#nomprojet_I”).val()之类的事情,这就是jQuery的工作方式,您不应该这样做。您应该将值保留在模型($scope)中,并严格使用DOM作为视图,并且永远不要从DOM中读取。我在设计中使用dev express,当我想要恢复任何文本框的内容时,我使用$(“#nomprojet_i”).val();问题是methode ajax中的表内容是正确的,但是当我将此内容发送给method controller时,它将其发送为null,我认为这个问题serialisationthinks需要您的帮助
function Addmodule() {
        var nom = $("#nomprojet_I").val();
var s = JSON.stringify(global);
        var cv = global.length;
        $.ajax({
            url: "/Module/ajoutermodule",
            type: "POST",
            dataType: 'json',
            data: {
                "nom": nom,
                "s": s,
                "cv": cv,
            },
            success: function (responseText) {
                debugger;
                if (responseText == "True") {
                    alert("Succes");
                }
                else {
                    alert("error");
                }
            }
        });

    }