我正在将MVC5与Ado.net数据表一起使用。我在控制器中有一个方法。我想使用ajax调用将表单数据发送到此方法。我想在创建新记录时在我的create动作中调用此方法,因此我可以将数据行中的数据行集合传递给同时创建多个记录。
这是我的方法的外观
DataTable dt = new DataTable();
public void InsertRecord(FormCollection collection)
{
if (dt.Columns.Count == 0) // if no columns defined
{
//create columns
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Length", typeof(double));
dt.Columns.Add("Breadth ", typeof(double));
dt.Columns.Add("Height ", typeof(double));.
dt.Columns.Add("IsMeasured ", typeof(bool));
}
if (collection != null)
{
DataRow row = dt.NewRow();
row.SetField<string>("Name", collection["Name"]);
row.SetField<double>("Length", Convert.ToDouble(collection["Length"]));
row.SetField<double>("Breadth", Convert.ToDouble(collection["Breadth"]));
row.SetField<double>("Height", Convert.ToDouble(collection["Height"]));
row.SetField<bool>("IsMeasured", Convert.ToBoolean(collection["IsMeasured"]));
dt.Rows.Add(row);
}
}
我的ajax调用看起来像:
function AddItem() {
var inputs = $('#DetailCard input, #DetailCard select').serialize();
$.ajax({
type: 'POST',
url: '/CreateRecords/InsertRecord',
data: inputs,
dataType: 'json',
success: function (info) {
if (info.result == "Error") {
alert(info.message);
}
}
});
};
我的提交按钮:
<input type="button" value="Add" onclick="AddItem()" />
运行项目时,我可以看到(填充)了数据行的前两个列字段(名称和长度)。但是,当程序进入“ Breadth”列时,它崩溃并给出错误( System.ArgumentException ...'Breadth'不属于表)。 我已经仔细检查了所有内容,但看不到我所缺少的内容。
答案 0 :(得分:0)
上面的代码示例在创建表时在名称之后(即“宽度”而不是“宽度”)后面有一个空格;列名必须完全匹配。
在这3个名称后的空格:
dt.Columns.Add("Breadth", typeof(double));
dt.Columns.Add("Height", typeof(double));.
dt.Columns.Add("IsMeasured", typeof(bool));
更改为:
=TEXT(WEEKDAY([Column1]), "dddd")