【问题标题】:Getting angular ajax data in asp.net mvc6在asp.net mvc6中获取角度ajax数据
【发布时间】:2017-02-28 12:28:11
【问题描述】:

我已经尝试了几个小时来解决这个问题,但似乎没有任何解决方案有帮助。我有一个带有 AngularJs 的 MVC6 项目。我可以连接,所以我的路由正常工作,如果我硬编码字符串或其他内容,我可以取回数据,但我似乎无法访问发送到服务器的数据。

我的angularjs http请求代码:

var app = angular.module('APIService', []);
app.factory('APIService', function ($http) {
    var api = {};

    api.getBuyer = function (data) {
        return $http.post('/api/buyer', data);
    }

    return api;
});

angularjs函数调用

APIService.getBuyer({ Url: 'samirbashir5739', FirstName: 'Samir' }).success(function (res) {

});

我的 C# 控制器

namespace Reporting.api
{
    [Route("api/buyer")]
    public class BuyersController : Controller
    {
        // POST api/buyer
        [HttpPost]
        public string Post([FromBody] string Url)
        {
            return Url;
        }
    }
}

我尝试将数据设置为“JsonResult 数据”,甚至是“字符串 URL”。我发现的大多数教程都有一个数据对象,因此它适合“[FromBody] 买家买家”之类的内容,但我没有它的对象,我只是想要数据。有可能吗?

【问题讨论】:

  • 在第一个代码时钟中,您将返回$http.post() 调用的承诺。那么你在运行res.success(),但是由于你已经从函数中返回,这行代码不会被调用
  • 看看这是否有帮助:stackoverflow.com/questions/30957248/…
  • 是的 Rhumborl,我忘了把它拿出来。谢谢

标签: c# asp.net angularjs ajax asp.net-core-mvc


【解决方案1】:

WebApi 不支持从 post 请求绑定多个参数。您可以查看更多详情here

因此,WebApi 的正确方法是创建一个请求模型,该模型将包含将要绑定的所有属性。也许您可以尝试多个 [FromUri] 参数,但是您必须自己在 angualr 中将它们添加到 url,而不仅仅是传递给 .post。

示例模型:

public class RequestModel
{
    public string Url {get;set;}
    public string Name {get;set;}
}

我还相信添加模型可以改善代码结构,因为您始终知道服务器期望什么,而不是处理一些动态数据。

附:没有注意到您使用的是 ASP.Net Core,我的数据来自 web api 2,但它可能仍然有效,因此您需要创建一个模型 + 发布请求时不应要求 FromBody,因为它是默认行为。

【讨论】:

  • 是的,你是对的。似乎唯一的方法是拥有一个请求模型。当我按照您的建议构建请求模型时,它运行良好。
【解决方案2】:

我认为你的控制器是错误的。您正在尝试传递一个 Url 和一个名称,而您的控制器方法正在等待一个 Url。 尝试只传递一个 Url,它应该可以工作。 如果你想传递 Url 和 Firstname,你必须像这样修改你的控制器方法:

[HttpPost]
    public string Post([FromBody] string Url, string FirstName)
    {
        // Do whatever you need to do here ...
    }

【讨论】:

  • 是的,我正在寻找类似于您在此处发布的内容,以便我可以处理这两个变量,但我也无法正常工作,Url 和 FirstName 都是空的
猜你喜欢
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
相关资源
最近更新 更多