加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用jQuery AJAX将多个变量POST到ASP .NET MVC控制器

发布时间:2020-12-16 00:08:01 所属栏目:百科 来源:网络整理
导读:我有一个控制器,我想通过 AJAX发布2个项目:一个复杂的对象(我的整个viewmodel)和一个整数(特定行的id).这个特殊项目是在VB .Net中,但是如果有人能用C#回答这个问题,那就没关系了(我对这两种语言都很了解).这两种语言都可行. 我可以将viewmodel POST到控制器
我有一个控制器,我想通过 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;
    }
  });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读