【问题标题】:pass data from angularjs controller to C# MVC CTRL将数据从 angularjs 控制器传递到 C# MVC CTRL
【发布时间】:2017-05-01 17:04:50
【问题描述】:

这很简单,但是没用

在 angularJS 部分我有这个代码:

   var data={"ID":1,"Key":"********"}
            $http.post("/Home/DeleteListItem", data)
                .success(function (data) {
                    alert(JSON.parse(data));
                }).error(function (response) {
                    alert(response);
                });

而C#部分是这样的

 [HttpPost]
public JsonResult DeleteListItem(Entity entity)

{

kishAppEntities db = new kishAppEntities();
Stream req = Request.InputStream;
db.Configuration.ProxyCreationEnabled = false;
var data = //some delete query

return new JsonResult()
{
    Data = data,
    JsonRequestBehavior = JsonRequestBehavior.AllowGet

};

}


public  class Entity
{
    int ID { set; get; }
    string Key { set; get; }

}

实体中没有数据,我对此一无所知????

我使用这个 post 方法作为第二种方法,但仍然无效

     var entity = { "ID": 1, "Key": "********" }
        $http({
            url: "./general/DeleteListItem",
            method: "POST",
            data: JSON.stringify({
                entity: entity
        }),
        headers: {
            'Content-Type': 'application/json'
        }
        }).success(function(data, status, headers, config) {           
        }).error(function(data, status, headers, config) {
        });

【问题讨论】:

  • 您遇到的错误是什么?根据提供的代码,我可以说角度承诺的使用是错误的。使用 $http.post("/Home/DeleteListItem", data).then(function(successResponse){}, function(errorResponse) {});
  • 我没有错误。问题是我没有从客户端获取我的帖子数据
  • 请看更新
  • 请在下面查看我的答案。在异步调用中使用 .success 不是正确的方法。参考:codelord.net/2015/05/25/dont-use-$https-success

标签: c# angularjs http model-view-controller


【解决方案1】:

您的 ID 和 Key 属性无法访问。在您的属性之前放置 public 访问修饰符,如下所示:

public  class Entity
{
    public int ID { set; get; }
    public string Key { set; get; }

}

【讨论】:

    【解决方案2】:

    试试这个

    $http.post("/Home/DeleteListItem", data)
    .then(function(successResponse){
    //Your code to handle response
    
    }, 
    function(errorResponse) {
    //your code to handle error
    });
    

    【讨论】:

    • 这是否返回任何错误?此外,检查调用是否命中您的 MVC 控制器方法。请注意,您不会立即得到结果。
    • 它调用 mvc contoller 并且如果你看到我调试我的控制器的照片,它不会返回任何错误,所以它调用它只是没有我的有效负载数据的方法
    • 对不起.. 我的网络阻止图像加载。请在控制器参数上使用 [FromBody] 属性: public JsonResult DeleteListItem([Frombody] Entity entity) {
    • vs ide dos note 已识别 [Frombody]
    • 对不起,有一个错字。它应该是 [FromBody]
    【解决方案3】:

    尝试使用 jquery $.param(data)。 你也可以试试角度 $httpParamSerializer https://code.angularjs.org/1.4.0/docs/api/ng/service/$httpParamSerializer

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多