我是C#.net MVC的新手,正在尝试将 FullCalendar
添加到MVC应用程序中。
FullCalendar
脚本会自动将?start={}&end={}
添加到URL中...这很好,但我不知道如何在控制器中使用querystring
变量。
我在WebForms应用程序中使用的方法不起作用。我需要在控制器中添加什么来访问querystring
变量?
我是C#.net MVC的新手,正在尝试将 FullCalendar
添加到MVC应用程序中。
FullCalendar
脚本会自动将?start={}&end={}
添加到URL中...这很好,但我不知道如何在控制器中使用querystring
变量。
我在WebForms应用程序中使用的方法不起作用。我需要在控制器中添加什么来访问querystring
变量?
public ActionResult SomeAction(string start, string end)
该框架将把查询字符串参数映射到方法参数。
我明白了...终于在另一个文章上找到了答案。
string start = Request.QueryString["start"];
string end = Request.QueryString["end"];
达维德,我和你遇到了完全相同的问题。MVC并不直观,而且似乎在设计时,那些孩子们没有理解为MVC设计一个直观的查询字符串系统的目的或重要性。
查询字符串根本没有设置在路由(RouteConfig)中。它们是添加到控制器中动作的“额外”参数。这非常令人困惑,因为操作参数被设计为同时处理路径和查询字符串。如果您添加了参数但它们无效,请添加第二个参数来处理查询字符串:
以下是您的控制器类中捕获ID(实际上只是在RouteConfig文件中设置为典型默认路径的路径)的操作:
public ActionResult Hello(int id)
但是,要捕获查询字符串,您的控制器需要添加一个额外的参数(顺便说一下,这个参数在您的RouteConfig文件中没有设置):
public ActionResult Hello(int id, string start, string end)
现在,它监听"/Hello?start=&end="或者"/Hello/?start=&end="或者"/Hello/45?start=&end=",假设"RouteConfig.cs"文件中的"id"设置为可选。
如果您想在"RouteConfig"文件中创建一个没有"id"路径的"自定义路由",则可以在该文件中省略"id"或其他参数。在这种情况下,您控制器中的Action方法中的参数将只处理查询字符串。
我发现这个非常令人困惑,所以你并不孤单!他们应该设计一种简单的方式来添加查询字符串路由,包括特定命名字符串、任何查询字符串名称和RouteConfig文件配置设计中的任意数量的查询字符串。由于没有这样做,它使得MVC Web应用程序中使用查询字符串整个过程都具有疑问,这相当奇怪,因为查询字符串自上世纪90年代中期以来就是全球网络的稳定部分。 :(
if(Context.Request.ContentLength != null)
{
String StartDate = Context.Request.Form["StartMonth"].ToString();
String EndMonth = Context.Request.Form["EndMonth"].ToString();
// Vendor
}
routes.MapRoute(
"apiRoute",
"api/{action}/{key}",
new { controller = "Api", action = "Prices", key = ""}
);
key=""
,结果都是一样的。routes.MapRoute(
"apiRoute",
"api/{action}/{key}",
new { controller = "Api", action = "Prices", key = UrlParameter.Optional }
);
prices/{key}
或者
prices?key={key}
两个都可以正常工作。
我在从ApiController继承而不是常规Controller类时遇到了这个问题。我通过使用 var container = Request.GetQueryNameValuePairs().ToLookup(x => x.Key, x => x.Value);
解决了它。
我遵循了这个线程 如何获取请求查询字符串的值?
编辑: 在尝试筛选容器后,我收到了奇怪的错误消息。在转到我的项目属性后,我取消了Optimize Code复选框,这样,我的控制器中的所有参数都从我想要的url中填充了起来。
希望这能帮助有同样问题的人.