如何使用c#asp.net从URL获取数据?

时间:2018-08-24 04:21:29

标签: javascript c# asp.net angularjs asp.net-web-api

我正在尝试获取一些通过表单发送到c#asp.net后端中的angularJS的信息,但是这样做很麻烦。

Visual Studio不允许我编译,因为它说:

  

错误CS0120:非静态字段,方法或属性“成员”需要对象引用

那是我的控制人

public class SearchController : ApiController
{
    public string Get()
    {
        string test = HttpContext.Request.QueryString["txt_search"];
        return test;
    }

}

这就是我在angularjs中得到的东西:

$scope.sendForm = function () {
    console.log($scope.model.search);
    $http({
        method: 'GET',
        url: '/api/search?txt_search=' + $scope.model.search
    })
    .then(function () {
        console.log('sucesso a executar o post');
    }, function () {
           console.log('Erro ao executar o post');
       });
};

3 个答案:

答案 0 :(得分:0)

如评论中所建议,您应该只需要更改方法定义并完全跳过即可:

public string Get(string txt_search)
{
    return txt_search;
}

或者,要引用当前请求,我相信您需要使用以下内容(注意添加.Current):

string test = HttpContext.Current.Request.QueryString["txt_search"];

原因是HttpContextRequest定义为 instance 属性。唯一的公共 static 属性是Current,它返回HttpContext的实例,通过它可以访问Request

答案 1 :(得分:0)

欢迎堆栈溢出

您的Angular代码正确

您需要在服务器端传递参数以收集txt_search

这里是:

[HttpGet]
[Route("/api/search")]
public string mySearchMethod(string txt_search)
{
    //something here with txt_search
    return "OK";
}

答案 2 :(得分:0)

以上两种解决方案都可以使用,但是对于使用asp.net Web API和路由器的另一种方法,您也可以按照以下方法进行制作

在您的Angular代码中,只需通过以下搜索即可

```

$scope.sendForm = function () {
    console.log($scope.model.search);
    $http({
        method: 'GET',
        url: '/api/search/'+ $scope.model.search
    })
    .then(function () {
        console.log('sucesso a executar o post');
    }, function () {
           console.log('Erro ao executar o post');
       });
};

```

通知 url: '/api/search/'+ $scope.model.search

并按如下所示更改Action方法

```

[HttpGet]
[Route("/api/search/{txt_search}")]
public string mySearchMethod(string txt_search)
{
    //something here with txt_search
    return "OK";
}

```

通过这样做,您不必担心参数txt_search的名称 无论您在路由[Route("/api/search/{txt_search}")]中提到什么,您都将在同一参数中获得该值。