18

我正在学习 ASP.NET 并偶然发现了这个方法声明:

public IQueryable<Product> GetProducts([QueryString("id")] int? categoryId) {.....}

教程说categoryId将等于查询字符串“id”(来自 URL,如 &id=5),但问题是什么是[QueryString("id")]语法?这可以在 ASP.NET 之外使用吗?它的应用程序是什么?

4

1 回答 1

19

那就是将QueryStringAttribute属性应用于参数categoryId。它只是一个属性,就像您可能更习惯于在方法或类上看到的属性一样,如下所示:

[STAThread]
static void Main()
{
}

在这种情况下,大概框架的某些部分(我不是 ASP.NET 开发人员,所以我无法准确指出什么)正在使用反射来查找所有方法,找到QueryStringAttribute应用于参数的任何值,然后将这些属性中的名称与查询字符串中的名称匹配,然后提取匹配值以传递给方法调用(再次使用反射)。

于 2013-03-28T20:47:31.210 回答