如何在呈现任何视图(或部分)之前执行操作?

时间:2013-11-19 11:31:13

标签: javascript jquery asp.net asp.net-mvc razor

我的问题很简单。我想知道在呈现任何视图(或部分)之前是否存在默认(由ASP.Net引擎)自动调用的方法(或某些东西)。我喜欢拦截它来执行一个动作,例如生成一个随机数。

如果有人有更好的想法,我会解释我的情景。

我的应用视图和局部视图使用ID模式呈现元素:Model_Id。在某些情况下,当用户调出一个带有重复主窗口任何元素id的视图的模态窗口时,我的jquery选择器会混淆。我已经创建了自定义帮助程序来执行该操作,因此我考虑生成随机数(并将其存储在会话中)并将其连接到id中,以获得类似Model_Id_12341234_Model_Id

如果有更好的方法,那将非常高兴知道。

1 个答案:

答案 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