我正在建设一个网站,我需要能够通知每个页面上的用户。这个函数看起来很像StackOverflow使用的,黄色(橙色?)顶部的边框。我不想在我所有的行为中重现这个逻辑。干的。
我正在考虑使用操作过滤器,但由于我需要查询我的数据层,这似乎不是解决它的最佳方法。
那么,例如,在每个页面上实现“您有一个以X天结尾的赏金问题”之类的特性的最佳方式是什么?
发布于 2010-02-24 03:13:40
在ASP.NET MVC2中有Html.RenderAction。如果我没记错的话,对于ASP.NET MVC1.0,在MvcContrib中也有相同的功能。
发布于 2010-02-24 08:14:41
当我有需要在每个操作上执行的逻辑,需要初始化视图数据时,我在基本控制器(我的所有控制器都继承自该方法)的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();
}
}
}发布于 2010-02-24 03:15:28
我将使用TempData来存储消息,添加一个帮助程序来呈现消息(如果有),然后在您的母版页中使用它。rails基本上就是这样做的,我一直觉得缺少通知系统(比如flash)是ASP.net MVC中的一个奇怪的漏洞,因为它很容易做到。
https://stackoverflow.com/questions/2320938
复制相似问题