我正在尝试获取一些通过表单发送到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');
});
};
答案 0 :(得分:0)
如评论中所建议,您应该只需要更改方法定义并完全跳过即可:
public string Get(string txt_search)
{
return txt_search;
}
或者,要引用当前请求,我相信您需要使用以下内容(注意添加.Current
):
string test = HttpContext.Current.Request.QueryString["txt_search"];
原因是HttpContext
将Request
定义为 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}")]
中提到什么,您都将在同一参数中获得该值。