我正在向我的mvc控制器发送ajax请求。我正在向mvc控制器对象发送一个对象,那里显示为空。
function add()
{
var viftech =
{
"id": $("#id").val(),
"name": $("#name").val(),
"lastname": $("#lastname").val(),
"address": $("#address").val()
};
var datasent = viftech;
console.log(datasent);
$.ajax({
url: "/VIftech/insertemployee",
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(datasent),
success: function(data) {
data ? alert("It worked!",+response.i) : alert("It didn't work.");
}
});
}
我的mvc控制器就是这样。注意viftech对象类具有相同的参数,例如id,name,lastname和address。 如果我像这样指定多个参数,我将获取值。
public JsonResult insertemployee(string id,string name,string
lastname,string address)
如果我指定对象,则它始终为null我已经使用了几种方法,但是它不起作用。
public JsonResult insertemployee(Viftech viftech)
{
if (string.IsNullOrEmpty(viftech.name))
{
return Json("badreques", JsonRequestBehavior.AllowGet);
}
return Json(Viftechdb.add(viftech),JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:0)
您需要在对象中命名参数。该对象需要使用viftech属性来指示参数名称,否则它将尝试绑定到ID,名称和姓氏。
var viftech =
{viftech:{
"id": $("#id").val(),
"name": $("#name").val(),
"lastname": $("#lastname").val(),
"address": $("#address").val()
}};
var datasent = viftech;
console.log(datasent);
$.ajax({
url: "/VIftech/insertemployee",
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(datasent),
success: function(data) {
data ? alert("It worked!",+response.i) : alert("It didn't work.");
}
});
答案 1 :(得分:0)
提交表单数据后,默认的模型绑定器将尝试读取表单数据,并将值分配给视图模型对象的相应 properties 。如果您的视图模型类具有 set 表属性,该属性具有与表单数据匹配的名称/结构,则模型绑定程序将能够成功完成此操作。
在您共享的代码中,您不是在创建属性,而是在Viftech
类定义中创建字段。因此,模型联编程序无法为此设置值。
要解决此问题,请通过指定set
和get
属性访问器,将它们全部更改为设置表属性。
public class Viftech
{
public int id { set;get; }
public string name { set;get; }
public string lastname { set;get; }
public string address { set;get; }
}
侧节点::我还建议对属性名称使用PascalCasing。
public string Name { set;get; }
而不是public string name { set;get; }