阿贾克斯后动作调用传递多个模型到控制器
问题描述:
我正在研究asp.net mvc web应用程序。我有一个用于注册用户信息的表单。保存操作写在按钮点击上。我试图将多个模型传递给控制器。但在控制器它变得空。我该如何解决这个问题..我尝试了一些解决方案。阿贾克斯后动作调用传递多个模型到控制器
这里是我的榜样 - 请您检查:
我有一个父模型:
public class ParentUsers
{
public Login loginModel { get; set; }
public Details registerModel { get; set; }
}
jQuery函数
$("#registerLE").click(function() {
var form = $("#registration");
var validatable = form.kendoValidator().data("kendoValidator");
debugger
if (validatable.validate()==true) {
var parentModel = {
loginModel :{
Username: $('input[name=uname]').val(),
Password: $('input[name=password]').val(),
Role: 'LE'
},
registerModel: {
name: $('input[name=firstname]').val(),
userId:1
}
}
$.ajax({
type: "POST",
url: "/Home/Register",
data: { "parentModel": parentModel },
datatype: "json",
cache: false,
success: function (data) {
alert("You Multiple Data Passed Successfully");
},
error: function (xhr) {
alert('No Valid Data');
}
});
}
});
控制器的方法:
public ActionResult Register(ParentUsers parentModel)
{
//...after save..//
return View("Login");
}
请帮助
答
你需要改变你的ajax的一点点。我已经测试你的代码,其优良的工作我身边
操作方法:
public ActionResult SubmitMethod(ParentUsers parentuser)
{
//do stuff here
return Json("" , JsonRequestBehavior.AllowGet);
}
模态:
public class ParentUsers
{
public loginModel loginModel { get; set; }
public Details registerModel { get; set; }
}
public class loginModel {
public string Username { get; set; }
public string Password { get; set; }
public string Role { get; set; }
}
public class Details {
public string name { get; set; }
public int Id { get; set; }
}
Ajax代码:
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<input type="button" id="btnPost" value="Gel Users" />
<script>
$(document).ready(function() {
$('#btnPost').click(function() {
alert('btnPost');
var loginModelObj = {
Username:"UsernameValue",
Password:"PasswordValue",
Role:"RoleValue",
};
var registerModelObj = {
name:"nameValue",
Id:1
};
var SendObject = {
loginModel: loginModelObj, //loginModel same name as in Modal
registerModel: registerModelObj, //registerModel same name as in Modal
}
$.ajax({
method: 'POST',
url: '/Test/SubmitMethod',
contentType: 'application/json', // send data type to server
dataType: 'json', //return type of data from server
data:JSON.stringify(SendObject),
// asyn: false,
success: function (data, status, xhr) {
// do stuff here
},
error: function (response, status, xhr) {
alert(response.statusText);
}
})
})
})
</script>
+0
非常感谢!有效 !你救了我;)(y) – bepositive
+0
很高兴,它帮助你:) –
使用ajax.begin形式,它将是一个最简单的方法来处理。 – TechVision