我的问题很简单。我想知道在呈现任何视图(或部分)之前是否存在默认(由ASP.Net引擎)自动调用的方法(或某些东西)。我喜欢拦截它来执行一个动作,例如生成一个随机数。
如果有人有更好的想法,我会解释我的情景。
我的应用视图和局部视图使用ID模式呈现元素:Model_Id
。在某些情况下,当用户调出一个带有重复主窗口任何元素id的视图的模态窗口时,我的jquery选择器会混淆。我已经创建了自定义帮助程序来执行该操作,因此我考虑生成随机数(并将其存储在会话中)并将其连接到id中,以获得类似Model_Id_1234
或1234_Model_Id
。
如果有更好的方法,那将非常高兴知道。
答案 0 :(得分:1)
您可以写一个custom action filter,以便在执行动作之前拦截。然后使用以下方法调用:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// do your pre action display stuff here!!
// if the code is added to basecontroller -
// also optionally defer back to base.OnActionExecuting(filterContext);
base.OnActionExecuting(filterContext);
}
我刚刚在传输过程中添加了更详细的答案。
参见this post on MSDN,它涵盖了MVC的控制器管道。
[编辑] - 在回复评论时,另请参阅此SO答案:Calling the Session before any Controller Action is run in MVC。实际上,在这个例子中,我们没有创建动作过滤器,我们只覆盖基本控制器内的OnActionExecuting
。