如何使用 c# asp.net 从 url 获取数据?
Posted
技术标签:
【中文标题】如何使用 c# asp.net 从 url 获取数据?【英文标题】:How can I use c# asp.net to get data from url? 【发布时间】:2019-01-30 12:29:37 【问题描述】:我正在尝试在我的 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');
);
;
【问题讨论】:
网络检查员对您浏览器中的请求有何看法?另外,您似乎在问如何使用 ASP.NET return 数据,而不是 get 数据?或者您是在问如何从 C# 向另一个网站发出请求,然后将其返回给您的客户? 我用来获取数据,但我回来只是为了检查它是否有效。实际上它是一个搜索按钮,我需要在后端过滤我的数据并将其返回到前面以显示用户。 Visual Studio 不允许我编译,因为它显示错误 CS0120:非静态字段、方法或属性“成员”需要对象引用@John 你不能在 Get 方法中添加一个参数string txt_search
吗?如果 URL 中有值,它应该自动映射。
你能把完整的代码发给我吗?您必须使用静态方法并访问其中的非静态字段
@ShanakaRusith 它工作了,谢谢,但由于某种原因,其中一个请求返回错误,说它只是 localhost:63318/api/search,然后其中 3 个正确返回 localhost:63318/api/search?txt_search=asd,为什么它返回4 次,其中一次不使用 ?txt_search 的东西?
【参考方案1】:
按照 cmets 中的建议,您应该能够更改您的方法定义并完全跳过它:
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
。
【讨论】:
【参考方案2】:欢迎来到 Stack Overflow,
你的 Angular 代码是正确的
你需要在服务器端传递一个参数来收集txt_search
值
这里是:
[HttpGet]
[Route("/api/search")]
public string mySearchMethod(string txt_search)
//something here with txt_search
return "OK";
【讨论】:
【参考方案3】:上述两种解决方案都可以使用,但是对于您使用 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")]
中提到什么,您都将获得相同参数中的值。
【讨论】:
以上是关于如何使用 c# asp.net 从 url 获取数据?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC / C#:如何从 url 中删除记录 id?
如何使用 C# ASP.Net 从 XML 文档中获取特定 XML 元素的列表?
如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?