Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JsonResults和GET POST的执行顺序_C#_Json_Asp.net Mvc 4_Model View Controller - Fatal编程技术网

C# JsonResults和GET POST的执行顺序

C# JsonResults和GET POST的执行顺序,c#,json,asp.net-mvc-4,model-view-controller,C#,Json,Asp.net Mvc 4,Model View Controller,我想找出别人的密码。这是MVC4.0,对这个ActionResult的调用从来没有开始或结束日期。从不因此,它启动getCalVm,您可以通过它构建视图模型并返回到视图。然而,在返回的过程中,ActionResult下面的这个JsonResult捕获了代码执行路径,并平展了返回的视图模型,调用了完全相同的视图模型,但现在将其包装为今天的日期+或-2个月 奇怪的是,这个Calendar ActionResult并没有在Global.asax中定义为映射路由,这与我读到的关于路由的所有内容都相反。我

我想找出别人的密码。这是MVC4.0,对这个ActionResult的调用从来没有开始或结束日期。从不因此,它启动getCalVm,您可以通过它构建视图模型并返回到视图。然而,在返回的过程中,ActionResult下面的这个JsonResult捕获了代码执行路径,并平展了返回的视图模型,调用了完全相同的视图模型,但现在将其包装为今天的日期+或-2个月

奇怪的是,这个Calendar ActionResult并没有在Global.asax中定义为映射路由,这与我读到的关于路由的所有内容都相反。我可以找到JsonResult路由GetEventsByEntity和其他两个路由的定义。请参见下面的完整路线定义

有人能告诉我,是否定义了一个映射到/School/Calendar/EntityID的路由,该路由将获得此URL www.domain.com/School/Calendar/10001,以及它是哪个路由

最后是执行命令。为什么JsonResult路由在ActionResult之后触发?我可以在JsonResults中设置一个测试条件,通知他们视图已经构建,他们应该停止执行。类似于使用通知JsonResult的会话变量,我们有数据停止执行。正确强制执行代码的正确方法是什么。前一位开发者正在失业线上领取卡片,因此我不确定他对这场混乱的意图。如果有人比我更有经验,我会全神贯注

最后,如何从客户端的onclick调用此操作结果?更具体地说,这是正确的做法吗?我正在将视图反馈给第三方日历,也许有更好的方法。对不起,洪水泛滥,但我认为这个代码很糟糕,我无法理解它。所以要么我是对的,需要解决这个问题,要么我是愚蠢的。我承认这是纠正这个缺陷的唯一方法,我同意愚蠢

另外,如果有一种方法可以使用Ajax并为io日历加载上个月和下个月,我想知道如何使用。我不是要求别人写代码,尽管我肯定会为此感谢他们。但是日历的URL有文档。如果有人比我更了解Ajax和javascript,而我差不多是任何一个身高超过3英尺的人都能帮上忙,抛出一个链接或其他东西,我会在今生或来生买啤酒

    public ActionResult Calendar(int? id, DateTime? startDate, DateTime? endDate)
    {
        SetSchoolIdCookie(id);
        return View(getCalVm(id, startDate, endDate));
    }

    [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
    public JsonResult GetEventsByEntity(DateTime? startDate, DateTime? endDate)
    {
        if (!startDate.HasValue) { startDate = DateTime.Today.AddMonths(-2); }
        if (!endDate.HasValue) { endDate = DateTime.Today.AddMonths(2); }
        return Json(getCalVm(null, startDate.Value, endDate.Value), JsonRequestBehavior.AllowGet);
    }
以下是路线图:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


        routes.MapRoute(
        "GameRoute", // Route name
        "Teams/Game/{id}/{entityId}", // URL with parameters
        new { controller = "Teams", action = "Game", id = UrlParameter.Optional, entityId = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
        "TournamentRoute", // Route name
        "Teams/Tournament/{id}/{entityId}", // URL with parameters
        new { controller = "Teams", action = "Tournament", id = UrlParameter.Optional, entityId = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
        "SchoolStateSearch", // Route name
        "School/StateSearch", // URL with parameters
        new { controller = "School", action = "StateSearch" } // Parameter defaults
        );

        routes.MapRoute(
        "SchoolSearch", // Route name
        "School/Search", // URL with parameters
        new { controller = "School", action = "Search" } // Parameter defaults
        );

        routes.MapRoute(
          "SchoolCalendarJson", // Route name
          "School/GetEventsByEntity", // URL with parameters
          new { controller = "School", action = "GetEventsByEntity" } // Parameter defaults
       );

        routes.MapRoute(
          "SchoolCalendarJsonSummary", // Route name
          "School/GetSummaryEventsByEntity", // URL with parameters
          new { controller = "School", action = "GetSummaryEventsByEntity" } // Parameter defaults
       );

        routes.MapRoute(
          "SchoolCalendarJsonDetails", // Route name
          "School/GetDetailEventsByEntity", // URL with parameters
          new { controller = "School", action = "GetDetailEventsByEntity" } // Parameter defaults
       );

        routes.MapRoute(
          "School", // Route name
          "School/{id}", // URL with parameters
          new { controller = "School", action = "Index", id = UrlParameter.Optional } // Parameter defaults
       );

        routes.MapRoute(
          "Default", // Route name
          "{controller}/{action}/{id}", // URL with parameters
          new { controller = "School", action = "Index", id = UrlParameter.Optional } // Parameter defaults
       );
有关ASP.NET MVC控制器和路由的基本了解,请参阅

对此地址的GET请求:

www.domain.com/School/Calendar/10001
将利用这条路线:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",                
    new { controller = "School", action = "Index", id = UrlParameter.Optional }
);
并将到达此端点:

public ActionResult Calendar(int? id, DateTime? startDate, DateTime? endDate)
{
    SetSchoolIdCookie(id);
    return View(getCalVm(id, startDate, endDate));
}
因为FullCalendar看起来是一个jQuery插件,所以我会使用