ASP.NET MVC – 获取QueryString值
在ASP.NET MVC下,你应该像在ASP.NET WebForms中一样selectQueryString params? 或者[AcceptVerbs(HttpVerbs.Get)]声明得到了用处?
查询string参数可以简单地通过使用动作的参数来接受 – 即
public ActionResult Foo(string someValue, int someOtherValue) {...}
这将接受像… / someroute?someValue = abc&someOtherValue = 123这样的查询
除此之外,您可以直接查看请求以获得更多控制。
您始终可以像使用Web窗体一样使用Request.QueryString
集合,但是也可以使MVC处理它们并将它们作为parameter passing。 这是build议的方式,因为它更容易,它会自动validationinput数据types。
我想你在找什么
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
我build议使用控制器的ValueProvider属性,就像UpdateModel / TryUpdateModel一样,可以提取所需的路由,查询和表单参数。 这将使您的方法签名不会变得非常大,而且会经常发生变化。 这也使它更容易testing,因为您可以在unit testing期间向控制器提供ValueProvider。
其实你可以用两种方法在MVC中捕获查询string…..
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); }
这将捕获两个查询string…例如:
/CrazyMVC?knownQuerystring=123&unknownQuerystring=456 Output: 123 - 456
不要问我为什么这样devise。 如果他们为单个查询string抛出整个Controller操作系统,并通过url-form-encoding返回所有string/编码的文件对象的dynamic列表,则会更有意义,因此您可以在一次调用中轻松访问它们。 也许这里有人可以certificate,如果可能的话?
对我来说,如何控制器捕获查询string是没有意义的,但这确实意味着您可以更灵活地捕获查询string,而不是开箱即用。 所以select你的毒药….都工作正常。
- dependency injection和Mocking框架之间的区别(Ninject vs RhinoMock或Moq)
- AppDomain中的静态字段
- 我可以使用FileInfo.CopyTo()在.NET中显示文件复制进度?
- 什么是C#4.0中使用的“dynamic”types?
- 在C#Windows服务上redirectstdout + stderr
- 为什么closures使用AllocConsole启动的控制台会导致我的整个应用程序退出? 我可以改变这种行为吗?
- 独特的不使用LINQ到对象
- 我如何安全地将一个System.Object转换为C#中的`bool`?
- System.Threading.Tasks – 限制并发任务的数量