在 angularjs 和 Asp .Net Web Api 中使用 http post 传递数据
Pass data using http post in angularjs and Asp .Net Web Api
我正在尝试使用来自 angularjs 代码的 Web API 的 post 方法,但是我从 $http 发送的数据没有到达 Web API方法。 planDetailsVM 参数保持为空。下面是我的代码-
Web API 控制器代码-
public class RateCalculationController : ApiController
{
[HttpPost]
public RateCalcOutParmDTO GetPlanRateCalculation(PlanDetailsVM planDetailsVM)
{
//planDetailsVM remains null
RateCalcOutParmDTO rateCalcOutParmDTO = new RateCalcOutParmDTO();
// Some operation here
return rateCalcOutParmDTO;
}
}
此处 planDetailsVM 保持为空。
AngularJs代码-
$http({
url: key_Url_GetPlanRateCalculation,
method: 'Post',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
params: $scope.PlanDetails
}).then(function (result) {
//Some operation here
});
路由映射代码-
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
我尝试遵循此 link 中的解决方案之一,但它对我不起作用。我需要做什么才能让 planDetailsVM 从 AngularJS http post?
接收 posted 数据
PlanDetails 数据-
$scope.PlanDetails = { QuoteName: null, BenefitAmountId: 0, BenefitAmountValue: null, DoD_Id: 0, DoD_Value: null, EPBD_Id: null, EPBD_Value: null, _DisplayMsg: null, _DisplayFlag: false };
我按照 Ben 的建议,通过在 https post 请求中将键 "params:" 替换为 "data:" 来解决这个问题。下面是完成工作的 angularJS 代码-
$http({
url: key_Url_GetPlanRateCalculation,
method: 'Post',
data: $scope.PlanDetails
}).then(function (result) {
//Some operation here
});
我正在尝试使用来自 angularjs 代码的 Web API 的 post 方法,但是我从 $http 发送的数据没有到达 Web API方法。 planDetailsVM 参数保持为空。下面是我的代码-
Web API 控制器代码-
public class RateCalculationController : ApiController
{
[HttpPost]
public RateCalcOutParmDTO GetPlanRateCalculation(PlanDetailsVM planDetailsVM)
{
//planDetailsVM remains null
RateCalcOutParmDTO rateCalcOutParmDTO = new RateCalcOutParmDTO();
// Some operation here
return rateCalcOutParmDTO;
}
}
此处 planDetailsVM 保持为空。
AngularJs代码-
$http({
url: key_Url_GetPlanRateCalculation,
method: 'Post',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
params: $scope.PlanDetails
}).then(function (result) {
//Some operation here
});
路由映射代码-
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
我尝试遵循此 link 中的解决方案之一,但它对我不起作用。我需要做什么才能让 planDetailsVM 从 AngularJS http post?
接收 posted 数据PlanDetails 数据-
$scope.PlanDetails = { QuoteName: null, BenefitAmountId: 0, BenefitAmountValue: null, DoD_Id: 0, DoD_Value: null, EPBD_Id: null, EPBD_Value: null, _DisplayMsg: null, _DisplayFlag: false };
我按照 Ben 的建议,通过在 https post 请求中将键 "params:" 替换为 "data:" 来解决这个问题。下面是完成工作的 angularJS 代码-
$http({
url: key_Url_GetPlanRateCalculation,
method: 'Post',
data: $scope.PlanDetails
}).then(function (result) {
//Some operation here
});