c# - 无法通过 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);
}
});
}
推荐阅读
- r - R - 将圆圈添加到现有的时间序列图中
- c++ - 反转字符串的c ++函数不起作用
- javascript - 匹配 javascript 中的正则表达式
- android - 无法在 30 秒内启动模拟器
- r - 您如何在 R 中运行编译器平均因果效应 (CACE) 分析?
- laravel - 通过 Laravel 中的数据透视表获取数据
- javascript - 如何到达 json 嵌套的最后一层并动态格式化输出?
- javascript - react/javascript - 类型错误:无法读取 null 的属性“classList”
- python - Python dexplot 改变 x 值的顺序
- javascript - 需要使用 HTML Canvas 将鼠标事件转换为移动设备的触摸事件