如何在MVC

时间:2016-05-10 22:29:30

标签: asp.net-mvc asp.net-mvc-4

所以我从_ViewStart.vbhtml获取了ViewContext.ViewData的一些数据。

类似于:ViewContext.ViewData("__Stuff") = stuffObject

现在,从没有View或MVC概念的类或任何与Web框架相关的类,我想抓住当前的ViewContext。

与您HttpContext.Current的方式类似,我想要一些询问当前ViewContext的方式。

到目前为止,我对HttpContext的搜索没有产生结果。

是的,我知道我可以从View中注入需要这些数据的ViewContext。但是这比没有这种注射的能够找到它的功能更不可取。

1 个答案:

答案 0 :(得分:2)

我想你可能运气不好。通常,您可能知道,视图是该行的结尾。大多数组件在知道视图之前都不知道该视图会运行。我知道你不愿意传递信息,但也许你可以使用像actionfilter这样的东西来将信息添加到HttpContext。

Public Class ViewDataInjectionAttribute
    Inherits ActionFilterAttribute

    Public Overrides Sub OnActionExecuted(ctx As ActionExecutedContext)

        Dim result = TryCast(ctx.Result, ViewResult)
        If result IsNot Nothing Then
            HttpContext.Current.Items("viewData") = result.ViewData
        End If

        MyBase.OnActionExecuted(ctx)
    End Sub

End Class

然后,您可以在动作,控制器甚至全局应用过滤器。