将AD用户名传递给MVC中的视图

时间:2014-09-24 16:19:52

标签: c# asp.net-mvc active-directory

我可以使用System.DirectoryServices.ActiveDirectory从AD获取用户信息。

我也可以获得没有域名的用户名,如下所示。我的问题是我如何将这些信息传递给我?

 DirectoryContextMock directorycontent = new DirectoryContextMock();

 System.Security.Principal.IPrincipal user = System.Web.HttpContext.Current.User;
 System.Security.Principal.IIdentity identity = user.Identity;
 string a= identity.Name.Substring(identity.Name.IndexOf(@"\") + 1);

目前我在我的视图中有以下代码并且它有效但我想将“a”传递给此视图而不是@ User.Identity.Name。这似乎很容易,但我无法做到。

Hello, <span class="username">@User.Identity.Name</span>!

2 个答案:

答案 0 :(得分:1)

只需向要传递到视图中的模型添加属性即可。

如果您没有使用模型,则可以使用ViewBag动态属性。

   public class MyModel
    {
       public string Identity {get;set;}
    }

    public class MyController : BaseController
    {

        public ActionResult Get()
        {
           var myModel = new MyModel();
           myModel.Identity = System.Web.HttpContext.Current.User.Identity.Name;

           //snip
           return View(myModel);
        }
    }

答案 1 :(得分:1)

在上面的评论中,您说控制器中正在定义a。因此,您可以使用几个非常简单的选项将数据发送到视图中:

1)在模型上创建一个属性,并将a的值存储在该属性上。

2)将其添加到ViewBag,例如:

// in the controller action
ViewBag.Username = a;

// in the view
@ViewBag.Username

您也可以使用与ViewBag类似的其他临时存储机制,例如TempDataViewData。 (ViewDataViewBag用于非常相似的目的,后者在更高版本中添加到框架中。)