我可以使用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>!
答案 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
类似的其他临时存储机制,例如TempData
或ViewData
。 (ViewData
和ViewBag
用于非常相似的目的,后者在更高版本中添加到框架中。)