首页 > 解决方案 > 无法通过 Ajax 将对象列表从视图传递到控制器

问题描述

我无法通过 Ajax 将对象列表传递给控制器​​。

但是我的代码很简单:

这是对象类:

    public class OptionDTO
{

    public string ID_OPTION { get; set; }       
    public string LI_VALUE { get; set; }

}

这是我的观点:

<div class="col-lg-12 col-md-12 col-xs-12" id="divOption">

<table id="TableOption">
   @foreach (var item in Model)
   {
    <tr class="item">
        <td>@item.LI_OPTION</td>
        <td>
                <input type="text" class="option-value" data-id="@item.ID_OPTION" />
        </td>
    </tr>
   }
</table>
<script>

function fctValidate() {
    var lstOption = [];
    try
    {
        $(".option-value").each(function(){
            var oOption = new Object();
            oOption.ID_OPTION = $(this).attr('data-id');
            oOption.LI_VALUE = $(this).val();
            lstOption.push(oOption);
        });
    } catch (error) {
        alert(error);
    }

    $.ajax({
        type: "POST",
        traditional: true,
        url: '@Url.Action("CreateOption", "CreateOption")',
        data: { "lstOption": lstOption },
        dataType: "json",
        error: function (xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            alert(err.Message);
        }
    });
}

这是控制器:

[HttpPost]
public void CreateOption(List<OptionDTO> lstOption)
{
   string dd = "";
}

我用值(表中的几行)填充输入“文本”。我已经在 javascript 中检查了该列表包含几行。当我单击验证按钮时,代码会转到控制器,但参数 lstOption 保持为空。

请问你能帮帮我吗 ?

提前非常感谢。

埃里克。

标签: c#ajaxasp.net-mvc

解决方案


derloopkat, Dawood Awan :感谢您的建议,我终于有了可行的解决方案:

 function fctValidate() {
    var lstOption = [];
    try {
        $(".option-value").each(function () {
            lstOption.push({
                ID_OPTION: $(this).data('id'),
                LI_VALUE: $(this).val()

            });
        });
    } catch (error) {
        alert(error);
    }

     $.ajax({
        type: "POST",
        url: '@Url.Action("CreateOption", "CreateOption")',
        data: { 'lstOption': lstOption },
        dataType: "json",
        error: function (xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            alert(err.Message);
        }
    });
}

推荐阅读