繁体   English   中英

ASP.Net MVC从FullCalendar的javascript函数调用控制器操作未加载视图

[英]ASP.Net MVC calling a controller action from FullCalendar's javascript function not loading the view

我正在开发一个ASP.Net MVC应用程序。 在我的一种观点中,我正在使用FullCalendar控件。 我的全日历控件有2个问题-我的第一个问题是-关于事件单击功能,我正在从Javasript函数调用某个其他控制器的操作。 我的剧本是-

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

            var sourceFullView = { url: '/Calendar/GetDiaryEvents/' };
            var sourceSummaryView = { url: '/Calendar/GetDiaryEvents/' };
            var CalLoading = true;

            $('#calendar').fullCalendar({
                header: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'month'
                },
                defaultView: 'month',
                editable: true,
                allDaySlot: false,
                selectable: true,
                slotMinutes: 15,
                events: '/Calendar/GetDiaryEvents/',
                eventClick: function (calEvent, jsEvent, view) {
                    if (!confirm('You selected Election ID: ' + calEvent.title
                        + "\nElection Date: " + calEvent.start.toDateString()
                        + "\n\nDo you want to Vote for this Election?")) {
                        return;
                    }
                    var electionID = calEvent.id;
                    $.ajax({
                        url: '@Url.Action("Tally", "Voting")',
                        type: 'GET',
                        dataType: 'json',
                        cache: false,
                        data: { id: calEvent.id }
                    });
                },

                eventResize: function (event, dayDelta, minuteDelta, revertFunc) {

                    if (confirm("Confirm change appointment length?")) {
                        UpdateEvent(event.id, event.start, event.end);
                    }
                    else {
                        revertFunc();
                    }
                },

                viewRender: function (view, element) {

                    if (!CalLoading) {
                        if (view.name == 'month') {
                            $('#calendar').fullCalendar('removeEventSource', sourceFullView);
                            $('#calendar').fullCalendar('removeEvents');
                            $('#calendar').fullCalendar('addEventSource', sourceSummaryView);
                        }
                    }
                }

            });

            CalLoading = false;


        });

    </script>

这是在调用VotingController的Tally方法-

            [HttpGet]
            public ActionResult Tally(int id)
            {
                return View(id);
            }

当我通过Tally视图调试时,它看起来也不错,但是未加载从Tally操作调用的新视图,浏览器仍显示我的日历控件。

我的第二个问题是我只想显示每月日历。 当我单击日历上的下一个或上一个按钮时,我的GetDiaryEvents函数称为三次。

尝试在Tally方法中使用JsonResult。 您还可以将视图呈现为字符串,并将其包含在json返回中。

[HttpGet]
        public JsonResult Tally(int id)
        {   //fill your model
            return Json( new { viewdata=model } );
        }

在ajax调用return中,您只需要读取json return对象

 success: function (return) {
            $("#element").append(return.viewdata);

        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM