我对.NET的MVC框架完全陌生,对模型 - 视图 - 控制器架构的工作原理缺乏了解。我有一个简单而基本的问题。
在我的应用程序中,它是一个日历应用程序,我有一个名为EventsController的Controller,它覆盖了一个名为OnCommand
的方法,它是DayPilot日历(开源日历)的一部分。这是我的方法:
protected override void OnCommand( CommandArgs e )
{
switch (e.Command)
{
case "previous":
StartDate = StartDate.AddMonths(-1);
StrMonth = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(StartDate.Month);
Console.WriteLine(StrMonth);
Query();
Update(CallBackUpdateType.Full);
break;
case "next":
StartDate = StartDate.AddMonths(1);
StrMonth = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(StartDate.Month);
Console.WriteLine(StrMonth);
Query();
Update(CallBackUpdateType.Full);
break;
}
}
在日历顶部单击向前和向后箭头时,将调用上一个和下一个箭头,并将 StrMonth 设置为正确的月份。有一个div包含两个箭头之间的月份名称,它需要从Controller方法或其他方法更新。如何从Controller更新视图以正确更改日历顶部显示的月份?
我尝试过以下方法:
- 将属性添加到名为CurrentMonth
的事件模型中,然后在视图中的 div 中使用该变量,如下所示:
<div>@Model.CurrentMonth</div>
然后尝试在我的Controller中使用ActionResult,为我更新它并在我的视图中调用Javascript:
在控制器中:
public ActionResult UpdateMonth(Event model)
{
model.CurrentMonth = "changeMonth()";
//return View(model);
}
在视图中
<script type="text/javascript">
@Model.Item2.CurrentMonth;
function changeMonth() {
@ViewBag.strMonth = @Model.Item2.CurrentMonth;
}
</script>
这应该是微不足道的,在几乎所有其他客户端 - 服务器架构中,更新客户端比在MVC中更容易。基于Controller ActionResult或方法更新View的最简单,最基本的方法是什么?我是否需要使用Ajax或MVC的ViewBag / ViewData属性?一个例子将不胜感激。