繁体   English   中英

无法通过 Ajax 将对象列表从视图传递到控制器

[英]Cannot pass list of objects from view to controller by 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 保持为空。

请问你能帮帮我吗 ?

非常感谢。

埃里克。

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);
        }
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM