我有一个控制器,我想通过
AJAX发布2个项目:一个复杂的对象(我的整个viewmodel)和一个整数(特定行的id).这个特殊项目是在VB .Net中,但是如果有人能用C#回答这个问题,那就没关系了(我对这两种语言都很了解).这两种语言都可行.
我可以将viewmodel POST到控制器没有任何问题.一旦我尝试包含整数,控制器就不能再发送请求了.我知道这可能是我如何格式化POST的数据的一个问题,但我无法确切地知道我需要做什么.
我的控制器动作如下:
<HttpPost> Public Function UpdateFromDate(viewmodel As RetirementBenefitEstimateviewmodel,estimateId) As ActionResult If viewmodel IsNot nothing AndAlso viewmodel.Estimate IsNot nothing AndAlso viewmodel.Estimate.RetirementBenefitsEstimates IsNot nothing Then For Each item In viewmodel.Estimate.RetirementBenefitsEstimates.Where(Function(est) est.EstimateId = estimateId) ' this is where I update the affected row item.UpdateFromDate(viewmodel.DateOfBirth,viewmodel.EmploymentStartDate,viewmodel.PersonId) Next item End If ' Get the prevIoUs viewmodel from session PerformSessionAction(Of RetirementBenefitEstimateviewmodel)(SessionConstants.RetirementEstimate,currentEstimate,SessionAction.Getvar) ' update it's .Estimate property currentEstimate.Estimate = viewmodel.Estimate ' save the updated viewmodel to session PerformSessionAction(Of RetirementBenefitEstimateviewmodel)(SessionConstants.RetirementEstimate,SessionAction.Setvar) ' finished! Return New HttpStatusCodeResult(HttpStatusCode.OK) End Function
我视图中的jquery AJAX调用如下所示:
$.ajax({ type: "POST",url: '@Url.Action("UpdateFromDate")',data: { viewmodel : model,estimateId : 3 } contentType: "application/json; charset=utf-8",dataType: "json",async: false,cache: false,success: function (msg) { //alert(JSON.stringify(msg)); return true; },error: function (XMLHttpRequest,textStatus,errorThrown) { //alert(errorThrown); return false; } });
如何发布我的viewmodel和整数(在本例中硬编码为3)?
解决方法
斯科蒂的帖子让我走上正轨.我很想把它标记为答案,但它有一个小问题.整数将正确POST,但viewmodel在控制器中开始显示为null.修复此问题所需的只是一个简单的JSON.parse调用.
我的AJAX调用最终看起来像:
var params = { viewmodel: JSON.parse(model),estimateId: 3 }; $.ajax({ url: '@Url.Action("UpdateFromDate")',type: "POST",dataType: 'json',data: JSON.stringify(params),Traditional: true,contentType: 'application/json',success: function (msg) { //alert(JSON.stringify(msg)); return true; },errorThrown) { //alert(errorThrown); return false; } });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。