2011-04-15 61 views
0

我使用MVC 3与火花视图引擎。我有一个应该在每个页面中访问的数据,数据基于用户登录信息。所以我收集数据时,用户在里面,我把它放在会议上。我使用控件来处理站点主数据(母版页)中的数据。会话中的数据将被绑定到该控件(例如Dropdownlist)。如何在视图中访问会话asp.net mvc

是在asp.net MVC的母版页上处理数据的最佳做法吗? 我尝试为控制器创建基类,buat我无法持有登录凭证(HttpContext.User.Identity)。 我如何从View中访问会话数据?

我尝试{火花视图引擎会话[ “MYDATA”]}使用@Session [ “MYDATA”](!但它没有工作:(

任何帮助?

回答

1

有两种常用的方法来处理这个问题 一个是从你的布局(母版页)使用Html.RenderAction,这样你就可以提前将所有的数据打包成一个母版页将要使用的模型

第二种方法是让你的控制器从另一个控制器继承,当基础控制器被实例化时,它负责填充ViewData机智h所需的数据然后显示在页面上。这要求您的所有控制器都从您的基本控制器继承。 见挂牌4/5: http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs

您也可以通过一个动作过滤器做到这一点(和其他方式太!),但我认为以上两种方式都有点清洁

0

你应该能够通过在控制器基类中调用System.Threading.Thread.CurrentPrincipal.Identity.Name来获取登录用户的凭证。

这应该允许您填充ViewData,然后从您的视图中访问数据。

另外,如果你仍然想使用session,你应该能够通过访问会话 - HttpContext.Current.Session [“MYDATA”]

+0

感谢Naraen for System.Threading.Thread.CurrentPrincipal:D – 2011-04-18 03:34:05

0

可以使用TempData的[“名称”]分享数据在控制器中执行不同的操作。请记住,一旦检索到值,它将删除数据,但可以使用.Peek和.Keep方法功能来存储其值

相关问题