从控制器更新MVC视图的最简单方法

时间:2016-02-26 02:28:41

标签: c# .net model-view-controller

我对.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属性?一个例子将不胜感激。

0 个答案:

没有答案