视图控制器传入ajax,如何使用jquery Ajax将两个数据模型从视图传递到控制器

我正在使用MVC开发Web应用程序。 在一种情况下,我将使用jquery ajax方法从我的视图中调用服务器端操作。 我必须传递两个模型对象作为ajax的数据,但每次传递空值。 我提到了在jquery中使用AJAX Post的正确方法来从强类型MVC3视图传递模型来解决我的问题,但是不满意。 那么如何使用jquery ajax传递我的模型对象呢?

用于调用Action的Jquery代码

$("#btnAddAjax").click(function(e){

e.preventDefault();

var usermodel = {

US_FirstName:$("#txtFirstName").val(),

US_LaststName:$("#txtFirstName").val()

};

var citydatemodel = {

date:$("#SignDate").val(),

city: $("#selectCity").val()

};

$.ajax({

url:'@Url.Action("AllLandLord")',

contentType:'application/json; charset=utf-8',

data: JSON.stringify({User: usermodel, testM: citydatemodel}),

UpdateTargetId:"dvLandLord3",

type:'POST',

success:function(data){

$("#dvLandLord3").html(data);

},

error:function(){

alert('Something Wrong !!!');

}

});

});

我有两个模型,为此我从viewModel调用它

public class User_Master

{

[Required(ErrorMessage ="* Please Enter First Name For Tenant")]

public string TN_FirstName { get; set; }

[Required(ErrorMessage ="* Please Enter Last Name For Tenant")]

public string TN_LastName { get; set; }

}

public partial class CityDate

{

[Required(ErrorMessage ="* Please Select Your City.")]

public string PR_City { get; set; }

[Required(ErrorMessage ="* Please Select Date")]

public Nullable CM_AgreementSignDate { get; set; }

}

最后,我将使用jquery ajax调用以下操作(用于部分视图)。

[HttpPost]

public PartialViewResult AllLandLord(User_Master usermaster, CityDate citydate)

{

List allLandLord = new List();

if (ModelState.IsValid)

{

allLandLord = agreementnewBAL.AllLandLordUsers();

return PartialView("LoadLandLord", allLandLord);

}

else

{

return PartialView("LoadLandLord", allLandLord);

}

}

可能是因为您在ajax调用中将内容类型设置为html。 您是否尝试删除该行或指定JSON?

好的,我会检查一下。

如果我使用contentType到JSON。 它会弹出错误。

如果删除该行怎么办?

当我重新开始那条线时,它没有像往常一样传递任何东西,null。

发现这个问题,看起来就像你想要做的那样。stackoverflow.com/questions/1545316/

我也提到了链接,但无法解决问题

我整理了一个快速演示:

基本动作:

[HttpPost]

public ActionResult TestMethod(userModel User, testModel testM)

{

return View();

}

型号:

public class testModel

{

public string UserType { get; set; }

}

public class userModel

{

public string FirstName { get; set; }

public string LastName { get; set; }

}

我的javqascript:

$("#myButton").click(function () {

var usermodel = {

FirstName: 'testfn',

LastName: 'testln'

}

var testmodel = {

UserType: 'test'

}

$.ajax({

url: '@Url.Action("TestMethod")',

contentType: 'application/json; charset=utf-8',

data: JSON.stringify({User: usermodel, testM: testmodel}),

type:"POST",

success:function(data){

alert("success");

},

error: function(){

alert("error");

}

});

});

调用JS导致我分配的数据正确传递给操作。

您应该能够更新我的JS代码,以使其在您的项目中工作。

编辑:

数据:ajax调用的组件需要与您的控制器匹配

data: JSON.stringify({User: usermodel, testM: testmodel}),

从我的例子成为

data: JSON.stringify({usermaster: usermodel, citydata: citydatamodel}),

编辑2:

您还需要确保您的js模型与您的MVC模型匹配:

var usermodel = {

US_FirstName:$("#txtFirstName").val(),

US_LaststName:$("#txtFirstName").val()

};

var citydatemodel = {

date:$("#SignDate").val(),

city: $("#selectCity").val()

};

这些与您的MVC模型不匹配。

var usermodel = {

TN_FirstName:$("#txtFirstName").val(),

TN_LaststName:$("#txtFirstName").val()

};

var citydatemodel = {

CM_AgreementSignData:$("#SignDate").val(),

PR_City: $("#selectCity").val()

};

好的杰伊,我会试试这个

你好周杰伦,很好的解决方案,但这不适合我。 有没有不同的方法来实现这个?

你可以用你试过的内容更新你的问题吗?

请参阅我编辑的jquery代码

编辑了我的答案,你需要制作你的数据:行匹配你的控制器参数名称

我使用data: JSON.stringify({usermaster: usermodel, citydata: citydatamodel}),,但它没有执行

发现你的代码的另一个问题,编辑我的答案。 要使JSON绑定起作用,JSON中的变量名称必须与模型中的属性名称匹配。

你好杰伊,这是我在宣言中usermaster的拼写错误,它现在正在运作。 我使用调试器检查,但它只发送firstName来操作其他参数仍然是null。

完善。 根据您的建议,我将变量名称和属性名称匹配,从而得到正确的答案。 非常感谢。

没问题。 很高兴你把事情解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值