Asp.net MVC 3 FullCalendar Ajax调用失败

时间:2011-08-28 18:25:48

标签: asp.net-mvc-3 fullcalendar

我的简单测试应用程序在本地IIS服务器上运行良好。 当我发布它的共享托管环境(discountasp.net),AJAX调用

$("#calendar").fullCalendar({
            eventSources: [{
                url: '/Home/GetCurrentMonth',
                type: 'Get',
                error: function () {
                    alert('there was an error while fetching events!');
                }
            }]

        });

失败。 Firebug用适当的参数显示到达,并给出'404 Not Found'错误。我可以看到控制器方法'GetCurrentMonth'永远不会被调用(我输入了一些日志\审计代码)。

由于我的本地IIS服务器上的一切正常,我无法通过IIS7管理器连接到远程站点以获得“失败的请求跟踪”。我有点卡住了。

如果没有神奇的web.config设置(哦,请!)我会满足于推荐支持ASP.NET MVC 3的'共享托管环境',其中FullCalendar可以工作,我会移动应用程序(我目前托管环境一直没有帮助。)

1 个答案:

答案 0 :(得分:4)

永远不要像你那样对网址进行硬编码。在ASP.NET MVC应用程序中生成URL时始终使用URL帮助程序:

$('#calendar').fullCalendar({
    eventSources: [{
        url: '@Url.Action("GetCurrentMonth", "Home")',
        type: 'GET',
        error: function () {
            alert('there was an error while fetching events!');
        }
    }]
});

或者,如果这是在一个单独的javascript文件中,您无法访问服务器端代码,则可能使用HTML5 data- *属性,例如:

<div id="calendar" data-url="@Url.Action("GetCurrentMonth", "Home")"></div>

然后在你单独的javascript文件中:

$('#calendar').fullCalendar({
    eventSources: [{
        url: $('#calendar').data('url'),
        type: 'GET',
        error: function () {
            alert('there was an error while fetching events!');
        }
    }]
});

我下注50美元你部署它时代码不起作用的原因是因为IIS附加了一个虚拟目录。因此,正确的网址不是/Home/GetCurrentMonth,而是/YourApplicationName/Home/GetCurrentMonth。为避免所有这些问题,您应该在生成网址时始终使用帮助程序。