从Razor View调用C#方法?

问题描述 投票:0回答:1

我是ASP.net的新手,我正在尝试使用MVC。我有一个方法,使用Linq从sql数据库获取当前用户信息。如何将这些结果导入视图并在网站的任何位置使用它们?

我获取用户信息的方法:

public List<AspNetUser> GetCurrentUser()
{
    FulfillmentContext db = new FulfillmentContext();
    string username = HttpContext.Current.User.Identity.GetUserName();

    var currentUser = (from u in db.AspNetUsers
                    join ur in db.AspNetUserRoles on u.Id equals ur.UserId
                    join r in db.AspNetRoles on ur.RoleId equals r.Id
                    where u.UserName == username
                    select u).ToList();

    return currentUser;
}
c# asp.net-mvc
1个回答
1
投票

理想情况下,您应该在模型中加载它:

public ActionResult Index()
{
    FulfillmentContext db = new FulfillmentContext();
    string username = 
    HttpContext.Current.User.Identity.GetUserName();

    var currentUser = (from u in db.AspNetUsers
                    join ur in db.AspNetUserRoles on u.Id equals ur.UserId
                    join r in db.AspNetRoles on ur.RoleId equals r.Id
                    where u.UserName == username
                    select u).First();

    var model = new Model();
    model.CurrentUser = currentUser;

    return View(model);    
}

但是,您可以创建HTML帮助程序扩展:

public static AspNetUser GetCurrentUser(this HtmlHelper helper)
{
    FulfillmentContext db = new FulfillmentContext();
    string username = HttpContext.Current.User.Identity.GetUserName();

    var currentUser = (from u in db.AspNetUsers
                    join ur in db.AspNetUserRoles on u.Id equals ur.UserId
                    join r in db.AspNetRoles on ur.RoleId equals r.Id
                    where u.UserName == username
                    select u).First();

    return currentUser;
}

然后从您的视图中调用它:

@{
    var user = Html.GetCurrentUser();
}
© www.soinside.com 2019 - 2024. All rights reserved.