在MVC3中使用Page.User.Identity.Name

lea*_*ing 17 asp.net-mvc-3

在MVC2中我Page.User.Identity.Name使用了<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

我怎样才能在MVC3中使用它?

Dar*_*rov 29

你总是可以这样做:

@Html.ViewContext.HttpContext.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

但不要.

通常情况下,视图不应尝试获取此类信息.它可以显示控制器传递的任何信息.它应该强类型化为由控制器动作传递的模型类.

所以在控制器动作中呈现此视图:

[Authorize]
public ActionResult Index()
{
    var model = new MyViewModel
    {
        Username = User.Identity.Name
    }
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

现在在视图内部随意使用此信息:

@Model.Username
Run Code Online (Sandbox Code Playgroud)

  • `SetAuthCookie`与`RedirectFromLoginPage'完全相同,只是它不执行重定向,因为我解释ASP.NET MVC中的重定向应该由返回RedirectToAction结果的控制器动作执行. (2认同)

Nik*_*tov 11

MVC 2

<%: this.Page.User.Identity.Name %>
Run Code Online (Sandbox Code Playgroud)

MVC 3

@this.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)