[英]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.