我正在使用Visual Studio 2010和ASP.NET MVC4视图引擎剃刀。
我喜欢将两个参数(对象,字符串)从视图传递给控制器。 在视图中,我有这个:
var persona = {};
function ModeloPersona() {
persona.CI = $('#CI').val();
persona.Nombre = $('#Nombre').val();
persona.Apellidop = $('#Apellidop').val();
persona.Apellidom = $('#Apellidom').val();
persona.Direccion = $('#Direccion').val();
persona.Sexo = $('#Sexo').val();
persona.Cumple = $('#Cumple').val();
}
function Grabar(modo) {
ModeloPersona();
$.ajax({
url: '@Url.Action("Grabar", "Home")',
type: 'POST',
data: {
Persona: JSON.stringify(persona),
Modo: modo
},
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function () {
}
});
}
和我的控制器我有这个:
public ActionResult Grabar(Persona mPersona, string modo){
if (ModelState.IsValid){
if (modo == "2"){
}
else{
}
}
return View();
}
问题如下,对象 mPersona 为空,但 modo 的值是正确的。< / p>
为什么mPersona为空?有什么问题,请帮帮我这个
此致 里卡多
答案 0 :(得分:1)
使用ajax
查看您要发送的post
参数
data: {
Persona: JSON.stringify(persona),
Modo: modo
}
MVC的默认模型绑定遵循基于参数名称的约定,如果您希望默认模型绑定器工作,则必须在ActionResult
中指定相同的发送和接收参数。应该看起来像
public ActionResult Grabar(Persona Persona, string Modo){...}
答案 1 :(得分:0)
将参数名称更改为persona
应该有效:
public ActionResult Grabar(Persona persona, string modo){
action方法的参数名称必须与JSON数据中对象的名称相匹配才能使模型绑定起作用。