我是C#.net MVC的新手,我正在尝试将FullCalendar
添加到MVC应用程序中。
FullCalendar
脚本会自动将?start={}&end={}
添加到网址中......这很好,但我不知道如何在控制器中使用querystring
变量。
我在Webforms应用程序中使用的方法不起作用。我需要向控制器添加什么才能访问querystring
变量?
答案 0 :(得分:82)
public ActionResult SomeAction(string start, string end)
框架会将查询字符串参数映射到方法参数。
答案 1 :(得分:71)
我想通了......终于找到了另一个article。
string start = Request.QueryString["start"];
string end = Request.QueryString["end"];
答案 2 :(得分:2)
根本没有在路径中设置查询字符串(RouteConfig)。它们是附加的"额外的" Controller中Actions的参数。这非常令人困惑,因为Action参数旨在处理BOTH路径和Querystrings。如果您添加了参数并且它们不起作用,请为查询字符串添加第二个参数:
这将是您在Controller类中捕获ID的操作(实际上它只是在RouteConfig文件中设置的路径,作为MVC中的典型默认路径):
public ActionResult Hello(int id)
但是为了捕获查询字符串,需要在Controller中添加一个额外的参数(顺便说一句,这不是在RouteConfig文件中设置的):
public ActionResult Hello(int id, string start, string end)
现在听取" / Hello?start =& end ="或" / Hello /?start =& end ="或" / Hello / 45?start =& end ="假设" id"在RouteConfig.cs文件中设置为可选。
如果你想创建一个"自定义路线"在RouteConfig文件中没有" id"路径,你可以放弃" id"或该文件中的操作后的其他参数。在这种情况下,控制器中Action方法中的参数只会处理查询字符串。
我发现自己非常困惑,所以你并不孤单!他们应该设计一种简单的方法来为RouteConfig文件配置设计中的特定命名字符串,任何查询字符串名称和任意数量的查询字符串添加查询字符串路由。通过不这样做,它使MVC Web应用程序中的查询字符串的整体使用成为可疑的,这是非常奇怪的,因为自20世纪90年代中期以来,查询字符串一直是万维网的稳定部分。 :(
答案 3 :(得分:1)
我的问题是用默认值覆盖我的查询字符串参数:
routes.MapRoute(
"apiRoute",
"api/{action}/{key}",
new { controller = "Api", action = "Prices", key = ""}
);
无论我插入查询字符串或仅key=""
结果如何。
然后使用UrlParameter.Optional删除默认覆盖:
routes.MapRoute(
"apiRoute",
"api/{action}/{key}",
new { controller = "Api", action = "Prices", key = UrlParameter.Optional }
);
现在
prices/{key}
或
prices?key={key}
两者都很好。
答案 4 :(得分:0)
这是我想出的。我遇到了很多重大问题,并且相信我现在处于MVC 6中,但这对未来的某人甚至可能有帮助。
//问题是Reqest.Form Request.Querystring和Request在MVC中不起作用的解决方案是使用Context.Request.Form并确保表单已经提交,否则将显示null引用或上下文问题bug
if(Context.Request.ContentLength != null)
{
String StartDate = Context.Request.Form["StartMonth"].ToString();
String EndMonth = Context.Request.Form["EndMonth"].ToString();
// Vendor
}
答案 5 :(得分:0)
从ApiController继承而不是常规Controller类继承时遇到了这个问题。我使用var container = Request.GetQueryNameValuePairs().ToLookup(x => x.Key, x => x.Value);
我关注了此线程How to get Request Querystring values?
编辑: 尝试对容器进行过滤后,我收到了奇怪的错误消息。转到项目属性后,我取消选中“优化代码”复选框,该复选框已更改,因此突然我的控制器中的参数就根据需要从URL中填满了。
希望这会帮助遇到相同问题的人。