如何使用 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"];

原因是HttpContextRequest 定义为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 元素的列表?

如何从列表视图中获取数据作为字符串 C# asp.net

如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?

如何在 c# ASP.NET 中使用 GridView_RowCommand 事件从 GridView 获取图像

如何从asp.net中的paypal(Sandbox)获取返回url中的参数