我是 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)。它们是控制器中操作的附加“额外”参数。这非常令人困惑,因为 Action 参数旨在处理路径和查询字符串。如果您添加了参数但它们不起作用,请为查询字符串添加第二个,如下所示:
这将是您在 Controller 类中捕获 ID 的操作(实际上只是在 RouteConfig 文件中设置的路径,作为 MVC 中的典型默认路径):
public ActionResult Hello(int id)
但是要捕获查询字符串,需要在控制器中添加一个附加参数(顺便说一下,这不是在您的 RouteConfig 文件中设置的):
public ActionResult Hello(int id, string start, string end)
现在,假设在 RouteConfig.cs 中将“id”设置为可选,这将侦听“/Hello?start=&end=”或“/Hello/?start=&end=”或“/Hello/45?start=&end=”文件。
如果您想在没有“id”路径的 RouteConfig 文件中创建“自定义路由”,您可以在该文件中的操作之后省略“id”或其他参数。在这种情况下,控制器中 Action 方法中的参数将只处理查询字符串。
我发现这让我自己非常困惑,所以你并不孤单!他们应该设计了一种简单的方法来为 RouteConfig 文件配置设计中的特定命名字符串、任何查询字符串名称和任意数量的查询字符串添加查询字符串路由。如果不这样做,它会使 MVC Web 应用程序中查询字符串的整个使用变得可疑,这很奇怪,因为自 1990 年代中期以来,查询字符串一直是万维网的稳定部分。:(
这是我想出的。我在这方面遇到了重大问题,并且相信我现在在 MVC 6 中,但这可能对将来甚至我自己的人有所帮助..
//问题是 Reqest.Form Request.Querystring 和 Request 在 MVC 中不起作用,解决方案是使用 Context.Request.Form 并确保表单已提交,否则会出现空引用或上下文问题错误。
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=""
结果如何。
然后使用 UrlParameter.Optional 摆脱默认覆盖:
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);
我关注了这个线程如何获取请求查询字符串值?
编辑:尝试过滤容器后,我收到了奇怪的错误消息。转到我的项目属性后,我取消选中了优化代码复选框,该复选框发生了变化,突然间,我的控制器中的参数从我想要的 url 中填充了。
希望这会帮助有同样问题的人..