我有这样的代码示例:获取当前用户实体在ASP.Net MVC
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
if (Request.IsAuthenticated) {
%>
Welcome <b><%= Html.Encode(Page.User.Identity.Name) %></b>!
美中不足的是我把用户的ID,而不是命名为“用户名”栏:
User user = _userRepository.Get(...);
FormsAuthentication.RedirectFromLoginPage(user.Id.ToString(), false);
第一个代码示例包含在主视图中,因此会出现在每个视图中。我不明白的是如何将该视图传递给用户模型实体,因为我没有直接调用它。
编辑:处理HTTP请求时是否存在单点问题,我可以介入将User模型对象插入到ViewData中?我不想触摸每一个控制器+动作来实现这一点。
但是我需要从每个控制器调用此代码,然后违反DRY? – ripper234 2010-01-05 23:14:04
不! 您可以在实用程序类中创建它,并从部分控制器(其视图是用户控件)进行调用。 然后,您需要在任何需要显示此视图的视图中调用RenderAction <>()方法,通常在母版页中不在视图中。 如果您以后需要从其他控制器访问其他用途的用户,请调用该实用程序类的属性。 – Meligy 2010-01-06 06:42:22
你有其他疑虑吗?你试过它并使它工作? – Meligy 2010-01-12 14:45:31