2017-08-03 53 views
-5

//这是我的控制器类,它使用iam在Asp.Net mvc中制作时间表。 ...我的观点反对我的contrller每次我运行它给一个弹出的失败的IAM不完全确定,但我认为这个问题与我的_Layout或somwthing else mabye它的问题,它没有加载在Asp.net Mvc 5 jQuery我的代码不是在Asp.Net Mvc的_Layout中渲染@scripts节,甚至当我运行时它给出失败的弹出

public class TutorController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 
     public JsonResult GetEvents() 
     { 
      using (TutorHubContext dc = new TutorHubContext()) 
      { 
       var events = dc.TimeTables.ToList(); 
       return new JsonResult { Data = events, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
      } 
     } 
    } 



@{ 
    ViewBag.Title = "Index"; 
} 
<!DOCTYPE html> 
<html> 
<head> 

</head> 
<body> 

    <h2>Index</h2> 

    <div id="calender"></div> 


    <link href="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.css" rel="stylesheet" /> 
    <link href="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.print.css" rel="stylesheet" media="print" /> 
    @section Scripts { 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.js"></script> 

    <script> 
     $(document).ready(function() { 

      events = []; 
      $.ajax({ 
       type: "GET", 
       url: "/Tutor/GetEvents", 
       success: function (data) { 
        $.each(data, function (i, v) { 
         events.push({ 
          eventID: v.EventID, 
          title: v.Subject, 
          description: v.Description, 
          start: moment(v.Start), 
          end: v.End != null ? moment(v.End) : null, 
          color: v.ThemeColor, 
          allDay: v.IsFullDay 
         }); 
        }) 
        GenerateCalender(event) 
       }, 
       error: function (error) { 
        alert('failed'); 
       } 
      }) 

      function GenerateCalender(events) { 
       $('#calender').fullCalendar('destroy'); 
       $('#calender').fullCalendar({ 
        contentHeight: 400, 
        defaultDate: new Date(), 
        timeFormat: 'h(:mm)a', 
        header: { 
         left: 'prev,next today', 
         center: 'title', 
         right: 'month,basicWeek,basicDay,agenda' 
        }, 
        eventLimit: true, 
        eventColor: '#378006', 
        events: events 
       }) 
      } 
     }) 

    </script> 
    } 
</body> 
</html> 

// PLZ有人帮我

+0

我使用的Visual Studio 2017年 –

+0

您还没有'jquery- {}版本.js'(这必须是第一个脚本) - –

+1

如果你得到一个'警报(“失败”); '那么显然这个代码*被包含在页面中,并且*正在执行。至于*为什么* AJAX调用失败,您将不得不检查实际的错误。 '警报('失败');'并没有真正地告诉你很多,是吗?该函数中的'error'变量有什么?当您使用浏览器的调试工具时,在网络选项卡中,服务器的响应是什么?当你调试你的服务器端代码时,它在哪里失败? – David

回答

1

东西看起来有点可疑这里。你说这是你的看法;但看起来它包含一个完整的<html> ... </html>文档。

您的_Layout.cshtml应该包含外部<html> ... </html>位,并且在该文件中需要调用@RenderSection("Scripts", required: false)

在您以后的观点中,您应该像目前一样拥有@section Scripts { ... }

要清楚,我会让我的_Layout.cshtml包含以下(注,每@Stephen Muecke的意见,我说的jQuery):

<!DOCTYPE html> 
<html> 
<head> 
    <!-- common css here --> 

    <!-- page specific css here --> 
    @RenderSection("Css", required: false) 
</head> 
<body> 
    @RenderBody() 
    <!-- common scripts here --> 
    <script src="//code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 

    <!-- page specific scripts here --> 
    @RenderSection("Scripts", required: false) 
</body> 
</html> 

然后我{}查看将.cshtml包含:

<h2>Index</h2> 

<div id="calender"></div> 

@section Css { 
    <link href="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.css" rel="stylesheet" /> 
    <link href="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.print.css" rel="stylesheet" media="print" /> 
} 
@section Scripts { 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.js"></script> 
<script> 
    $(document).ready(function() { 
     events = []; 
     $.ajax({ 
      type: "GET", 
      url: "/Tutor/GetEvents", 
      success: function (data) { 
       $.each(data, function (i, v) { 
        events.push({ 
         eventID: v.EventID, 
         title: v.Subject, 
         description: v.Description, 
         start: moment(v.Start), 
         end: v.End != null ? moment(v.End) : null, 
         color: v.ThemeColor, 
         allDay: v.IsFullDay 
        }); 
       }) 
       GenerateCalender(event) 
      }, 
      error: function (error) { 
       alert('failed'); 
      } 
     }) 

     function GenerateCalender(events) { 
      $('#calender').fullCalendar('destroy'); 
      $('#calender').fullCalendar({ 
       contentHeight: 400, 
       defaultDate: new Date(), 
       timeFormat: 'h(:mm)a', 
       header: { 
        left: 'prev,next today', 
        center: 'title', 
        right: 'month,basicWeek,basicDay,agenda' 
       }, 
       eventLimit: true, 
       eventColor: '#378006', 
       events: events 
      }) 
     } 
    }) 
    </script> 
} 
+1

虽然这当然更好,但浏览器对于在HTML文档中包含完整的HTML文档相当宽容。 OP报告'alert('failed')''行正在成功执行,这非常确定地表明客户端代码至少能够成功执行。 – David

+0

@大卫好点 - upvoted。 – Paul

相关问题