asp.net-mvc – MVC ajax json post到控制器动作方法
|
我试图实现一个JQuery AJAX调用控制器动作方法,其中包含一个复杂的对象作为参数。
我想触发一个异步发布,当用户关闭一个字段时调用[不是一个Form保存帖子 – 如我在其他示例中所示)。 我的目的是: >实例化客户端上的对象(而不是ViewModel,它提供了View的类型); 结果将作为JSON结果返回;并且将根据返回的结果将数据加载到视图中的字段中。 问题是: >如果action方法属于HttpPost属性,则不会调用控制器Action方法(即使AJAX调用类型设置为“POST”)。 希望有人可以帮助。谢谢。代码如下: 客户端js文件 var disputeKeyDataObj = {
"InvoiceNumber": "" + $.trim(this.value) + "","CustomerNumber": "" + $.trim($('#CustomerNumber').val()) + ""
};
var disputeKeyDataJSON = JSON.stringify(disputeHeadlineData);
$.ajax({
url: "/cnr/GetDataForInvoiceNumber",type: "POST",data: disputeKeyDataJSON,dataType: 'json',contentType: "application/json; charset=utf-8",success: EnrichedDisputeKeyData(result)
});
Action与Action方法参数关联的类型的过滤器和类 [DataContract]
public class DisputeKeyData
{
[DataMember(Name = "InvoiceNumber")]
public string InvoiceNumber { get; set; }
[DataMember(Name = "CustomerNumber")]
public string CustomerNumber { get; set; }
}
控制器上的操作方法 //[HttpPost]
[ObjectFilter(Param = "disputeKeyData",RootType = typeof(DisputeKeyData))]
public ActionResult GetDataForInvoiceNumber(DisputeKeyData disputeKeyData)
{
//Blah!
//....
return Json(disputeKeyData,JsonRequestBehavior.AllowGet);
}
解决方法下面是我如何得到这个工作。关键点是: [我知道有一种方法绑定一个对象而不是默认的ViewModel对象,但最终只是填充必要的属性为我的需要,因为我无法得到它的工作] [HttpPost]
public ActionResult GetDataForInvoiceNumber(MyViewModel myViewModel)
{
var invoiceNumberQueryResult = _viewModelBuilder.HydrateMyViewModelGivenInvoiceDetail(myViewModel.InvoiceNumber,myViewModel.SelectedCompanyCode);
return Json(invoiceNumberQueryResult,JsonRequestBehavior.DenyGet);
}
用于调用此操作方法的JQuery脚本: var requestData = {
InvoiceNumber: $.trim(this.value),SelectedCompanyCode: $.trim($('#SelectedCompanyCode').val())
};
$.ajax({
url: '/en/myController/GetDataForInvoiceNumber',type: 'POST',data: JSON.stringify(requestData),contentType: 'application/json; charset=utf-8',error: function (xhr) {
alert('Error: ' + xhr.statusText);
},success: function (result) {
CheckIfInvoiceFound(result);
},async: true,processData: false
}); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Html.BeginForm使用FormMethod.GET丢失rout
- 如何模拟我的ASP.NET应用程序的HTTP 500错误?
- asp.net – GridView分页 – 第一,最后,下一个,上一个
- .net – MultipartFormDataStreamProvider vs HttpContext.
- asp.net – 占位符/示例文本在用户的文本框中
- asp.net – 有没有办法以编程方式设置Elmah中的应用程序名称
- asp.net – 记录网页的加载时间
- asp.net – 在web.config上有哪些官方的,广泛的,完整的文档
- 在Asp.net中加载平衡,在开发时我应该考虑什么?
- asp.net-mvc – 如何添加到Azure会话Cookie HttpOnly和Secu
- asp.net – 使用Python Mechanize进行屏幕分析as
- 在ASP.NET MVC2创建方法中使用FormCollection的正
- asp-classic – 经典的asp / asp.net网站 – glo
- 如何使用ASP.NET身份实现多租户用户登录
- asp.net-mvc – 使用Ninject时如何处理DBContext
- ASP.NET MVC 4 / Web API – 为Accepts插入Razor
- asp.net – 在css文件中的div.classname
- asp.net – 使用以前输入的值防止文本框自动填充
- ASP.NET中没有会话状态的用户身份验证
- asp.net – 引用不稳定的DLL
