在MVC控制器中使用查询stringvariables
我是C#.net MVC的FullCalendar
,并试图将FullCalendar
添加到MVC应用程序。
FullCalendar
脚本会自动将?start={}&end={}
到URL中,这很好,但我不知道如何在控制器中使用querystring
variables。
我在Webforms应用程序中使用的方法不起作用。 我需要添加到控制器访问querystring
variables?
public ActionResult SomeAction(string start, string end)
框架将查询string参数映射到方法参数。
我想通了…终于find了另一篇文章 。
string start = Request.QueryString["start"]; string end = Request.QueryString["end"];
戴维斯,我有和你一样的问题。 MVC并不直观,似乎当他们devise的时候,kiddos并不了解MVC的直观查询string系统的目的或重要性。
查询string没有在路由中设置(RouteConfig)。 它们是“控制器”中“操作”的附加“额外”参数。 这是非常混乱的行动参数被devise来处理两个path和Querystrings。 如果你添加了参数,但它们不起作用,为查询string添加第二个参数,如下所示:
这将是你的控制器类中的动作,它捕获了ID(实际上它只是在RouteConfig文件中设置的path,作为MVC中典型的默认path):
public ActionResult Hello(int id)
但是要捕获查询string,控制器中的其他参数需要添加(顺便说一下,在RouteConfig文件中没有设置):
public ActionResult Hello(int id, string start, string end)
假设在RouteConfig.cs中将“id”设置为可选,现在会监听“/ Hello?start =&end =”或“/ Hello /?start =&end =”或“/ Hello / 45?start =&end =文件。
如果您想在RouteConfig文件中创build一个没有“id”path的“自定义路由”,则可以在该文件的操作之后,将“id”或其他参数省略。 在这种情况下,控制器中的Action方法中的参数只处理querystrings。
我发现自己非常困惑,所以你并不孤单! 他们应该devise一个简单的方法为RouteConfig文件configurationdevise中的特定命名string,任何查询string名称和任意数量的查询string添加查询string路由。 如果不这样做,那么在MVC Web应用程序中使用querystrings就成了一个问题,这是非常奇怪的,因为从90年代中期开始,querystrings一直是万维网的一个稳定部分。 🙁
我的问题是用默认值覆盖我的查询string参数:
routes.MapRoute( "apiRoute", "api/{action}/{key}", new { controller = "Api", action = "Prices", key = ""} );
不pipe我插入查询string或只有key=""
结果。
然后使用UrlParameter.Optional摆脱默认覆盖:
routes.MapRoute( "apiRoute", "api/{action}/{key}", new { controller = "Api", action = "Prices", key = UrlParameter.Optional } );
现在
prices/{key}
要么
prices?key={key}
两者都很好。
这是我想出来的。 我有这个问题,并相信我现在在MVC 6,但这可能会有所帮助,甚至有人甚至在未来..
//问题是Reqest.Form Request.Querystring和Request不能在MVC中工作,解决方法是使用Context.Request.Form,并确保表单已经提交,否则将会显示null引用或上下文问题错误。
if(Context.Request.ContentLength != null) { String StartDate = Context.Request.Form["StartMonth"].ToString(); String EndMonth = Context.Request.Form["EndMonth"].ToString(); // Vendor }