代码之家  ›  专栏  ›  技术社区  ›  alexn

ASP.NET MVC在操作之间共享逻辑

  •  0
  • alexn  · 技术社区  · 15 年前

    我正在建立一个网站,我需要能够在每个页面上通知用户。这个函数看起来像stackoverflow使用的是黄色(橙色?)。顶部有边框。我不想在我的所有行为中重现这种逻辑。干燥。

    我正在考虑使用动作过滤器,但是由于我需要查询我的数据层,它似乎不是解决问题的最佳方法。

    那么,例如,在每一页上实现“你有一个悬赏期以x天结束的问题”这样的功能的最佳方法是什么?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Darin Dimitrov    15 年前

    在ASP.NET MVC 2中有 Html.RenderAction . 对于ASP.NET MVC 1.0,如果我能正确调用,在 MvcContrib .

        2
  •  1
  •   JonoW    15 年前

    当我有需要执行每个操作的逻辑,需要初始化视图数据时,我在我的基本控制器(所有控制器都从中继承)的OnResultExecuting方法(在操作运行后调用,在视图呈现前调用)中执行此操作,该方法在我的基本视图数据模型(所有视图数据模型从中继承)上设置数据:

    public class BaseViewData
    {
      public string UserMessage { get; set; }
    }
    
    public class BaseController : Controller
    {
      protected override void OnResultExecuting(ResultExecutingContext filterContext)
      {
         ViewResult viewResult = filterContext.ActionResult as ViewResult;
         //Only continue if action returned an ActionResult of type ViewResult,
         //and that ViewResults ViewData is of type BaseViewData
         if(viewResult != null && viewResult.ViewData is BaseViewData)
         {
            ((BaseViewData)viewResult.ViewData).UserMessage = userService.GetUserMessage();
         }
      }
    }
    
        3
  •  0
  •   Matt Briggs    15 年前

    我将使用tempdata来存储消息,添加一个助手来呈现消息(如果有),然后在母版页中使用它。这基本上就是Rails的工作方式,我一直觉得缺少通知系统(比如flash)在ASP.NET MVC中是一个奇怪的缺口,因为这很容易做到。