来自Action-View的MVC 4 C#Calendar Widget

时间:2013-03-30 00:44:26

标签: c# asp.net-mvc razor asp.net-mvc-4

我在MVC应用程序中使用HTML,CSS和C#创建了一个Web日历。 HTML在视图中,我有一个控制器,其中包含初始化日历并在视图上显示正确日期的操作。

它按预期工作,但问题来自于我希望将此日历嵌入到由不同操作控制并且加载了不同模型的不相关视图中的几个页面。

我可以复制粘贴视图代码并对模型进行必要的调整,但这并不理想。我尝试使用RenderAction,但问题是当我使用按钮导航到不同月份时,我会离开初始视图。 e.g:

@Html.ActionLink("‹", "Calendar", 
new { month = Model.RequestedDateTime.Month - 1, year = 
Model.RequestedDateTime.Year })

有没有办法修改此行为? 感谢

2 个答案:

答案 0 :(得分:1)

Html.ActionLink,总是创建一个普通的链接,具有共同的行为。如果你想分享你的日历。 为避免冗余代码,您可以将日历重新设计为部分视图,并用标签替换链接。将ajax函数绑定到label-click-event以刷新日历。类似的东西:

@Html.Label("<", new { onclick="pageMonthBack("+Model.RequestedDateTime.Month - 1+", " Model.RequestedDateTime.Year+");" })

我会将调用的ajax函数放在一个单独加载的脚本中。

答案 1 :(得分:0)

我以类似的方式解决了问题,开发人员10214提出的问题。我使用了div,因为我使用了Render.Action。然后我使用了以下代码

 $(function () {
 $("#cal").on('click', "#backwards", function () {
 $.ajax({
    url: "Home/Calendar?target=backwards",
    cache:false,
    type: "GET",
    success: function (result) {
        $("#cal").html(result);
    }
});
});
});

在包含页面中。而且我根本没有使用ActionLink。