Bud*_*Joe 70 .net asp.net asp.net-mvc
在ASP.NET MVC下你应该像在ASP.NET WebForms中那样选择QueryString参数吗?或[AcceptVerbs(HttpVerbs.Get)]
以某种方式使用声明?
Mar*_*ell 107
只需使用动作上的参数即可接受查询字符串参数 - 即
public ActionResult Foo(string someValue, int someOtherValue) {...}
Run Code Online (Sandbox Code Playgroud)
这会接受像这样的查询 .../someroute?someValue=abc&someOtherValue=123
除此之外,您可以直接查看请求以获得更多控制权.
Bas*_*ANI 26
我认为你在寻找的是
Request.QueryString["QueryStringName"]
Run Code Online (Sandbox Code Playgroud)
并且您可以通过添加来访问视图 @
现在看看我的例子,我用QueryString生成了一个Url
var listURL = '@Url.RouteUrl(new { controller = "Sector", action = "List" , name = Request.QueryString["name"]})';
Run Code Online (Sandbox Code Playgroud)
listURL值是 /Sector/List?name=value'
什么时候queryString
是空的
listURL值是 /Sector/List
Meh*_*ari 24
您始终可以使用Request.QueryString
Web表单等集合,但您也可以使MVC处理它们并将它们作为参数传递.这是建议的方式,因为它更容易,它将自动验证输入数据类型.
我建议使用控制器的ValueProvider属性,与UpdateModel/TryUpdateModel提取所需的路由,查询和表单参数的方式非常相似.这将使您的方法签名不会变得非常大并且经常变化.它还使测试更容易,因为您可以在单元测试期间向控制器提供ValueProvider.
实际上,您可以通过两种方式捕获 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);
}
Run Code Online (Sandbox Code Playgroud)
这将捕获两个查询字符串...例如:
/CrazyMVC?knownQuerystring=123&unknownQuerystring=456
Output: 123 - 456
Run Code Online (Sandbox Code Playgroud)
别问我为什么要这样设计。如果他们针对单个查询字符串抛弃整个控制器操作系统,而只是通过 url-form-encoding 返回捕获的所有字符串/编码文件对象的动态列表,这样你就可以在一次调用中轻松访问它们,这样会更有意义。也许这里有人可以证明如果可能的话?
对我来说,控制器如何捕获查询字符串毫无意义,但这确实意味着您可以比它们开箱即用地教您更灵活地捕获查询字符串。所以选择你的毒药......两者都很好用。
归档时间: |
|
查看次数: |
119787 次 |
最近记录: |