通过模型传递自定义按钮功能

时间:2018-09-06 13:19:43

标签: javascript asp.net-mvc fullcalendar

我试图像这样将功能从MVC模型传递给全日历CustomButton

var model = new CalendarViewModel()
{
    (...different properties of fullcalendar...)
    CustomButtons = new
    {
        CustomButton = new
        {
            Text = "Custom",
            Click = "function() { window.location.href = " + Url.Action("CustomView", "Custom") + "; }"     
        }
    },
    Header = new { Center = "title", Left = "prev,next customButton", Right = "month,agendaWeek,agendaDay,today" },
};

然后序列化并将其传递给js文件

function initFrom(calendarViewModel, rootUrl) {
        $('#calendar').fullCalendar(calendarViewModel);
}

但是我得到的错误customButtonProps.click.call is not a function是由于我正在从序列化模型传递字符串而引起的。

如果我的方法不正确,如何获得期望的结果-将路由值传递给自定义按钮单击功能(在js文件中不对路由值进行硬编码)?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

基于this scheduler demo,我在JS中添加了自定义按钮,并从传递的模型中检索了值(模型略有变化,我在这里省略了):

$('.fc-toolbar .fc-left').append(
    $('<div class="fc-button-group"><button type="button" class="ui-button ui-state-default ui-corner-left ui-corner-right ui-state-hover">' + calendarViewModel.customButton.text + '</button></div>')
        .on('click', function () {
            location.href = calendarViewModel.customButton.url;
        })
);