NET MVC-获取 QueryString 值

在 ASP.NET MVC 下,是否应该像在 ASP.NET WebForms 中那样拾取 QueryString 参数?还是 [AcceptVerbs(HttpVerbs.Get)]声明以某种方式被使用了?

180547 次浏览

您可以像使用 Web 表单一样使用 Request.QueryString集合,但也可以让 MVC 处理它们并将它们作为参数传递。这是建议的方法,因为它更容易,它将自动验证输入数据类型。

查询字符串参数可以通过在操作-即。

public ActionResult Foo(string someValue, int someOtherValue) {...}

它将接受像 .../someroute?someValue=abc&someOtherValue=123这样的查询

除此之外,您可以直接查看请求以获得更多控制。

我建议使用控制器的 ValueProvider 属性,就像 UpdateModel/TryUpdateModel 提取所需的路由、查询和表单参数一样。这将使您的方法签名不会潜在地变得非常大,并且经常受到更改的影响。由于可以在单元测试期间向控制器提供 ValueProvider,因此它还使得测试更加容易。

我觉得你要找的是

Request.QueryString["QueryStringName"]

您可以通过添加 @在视图上访问它

现在看我的例子,,,我用 QueryString 生成了一个 Url

 var listURL = '@Url.RouteUrl(new { controller = "Sector", action = "List" , name = Request.QueryString["name"]})';

ListURL 值是 /Sector/List?name=value'

queryString是空的时候

ListURL 值是 /Sector/List

实际上,您可以通过两种方式在 MVC 中捕获查询字符串... ..。

public ActionResult CrazyMVC(string knownQuerystring)
{


// This is the known query string captured by the Controller Action Method parameter above
string myKnownQuerystring = knownQuerystring;


// This is what I call the mysterious "unknown" query string
// It is not known because the Controller isn't capturing it
string myUnknownQuerystring = Request.QueryString["unknownQuerystring"];


return Content(myKnownQuerystring + " - " + myUnknownQuerystring);


}

这将捕获两个查询字符串... ... 例如:

/CrazyMVC?knownQuerystring=123&unknownQuerystring=456


Output: 123 - 456

别问我为什么要这么设计。如果他们抛弃了针对单个查询字符串的整个 Controller 操作系统,只是通过 URL-form-coding 为 URL 返回一个捕获的所有字符串/编码文件对象的动态列表,那么您可以轻松地在一次调用中访问所有字符串/编码文件对象,这样做会更有意义。也许这里有人能证明如果可能的话?

控制器如何捕获查询字符串对我来说没有任何意义,但是它确实意味着您在捕获查询字符串方面拥有比他们开箱即用教您的更大的灵活性。所以,选择你的毒药... . 都工作良好。

@ Context. Request. Query [“ yourId”]

这是.NET6(和其他 netcore)中的正确方法

Var Param = Request. Query [“ IndexString”] ;

如果需要是字符串

字符串 Param = Request.Query [“ IndexString”] . ToString () ;