asp.net-mvc - ASP.NET MVC 显示配置文件中的用户名

标签 asp.net-mvc user-controls master-pages

以下是 Visual Studio 创建的标准默认 ASP.NET MVC 项目中的 LogOn 用户控件 (LogOnUserControl.ascx):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
if (Request.IsAuthenticated) {
%>
Welcome <b><%: Page.User.Identity.Name %></b>!
[ <%: Html.ActionLink("Log Off", "LogOff", "Account") %> ]
<%
}
else {
%> 
[ <%: Html.ActionLink("Log On", "LogOn", "Account")%> ]
<%
}
%>

插入到母版页中:

<div id="logindisplay">
    <% Html.RenderPartial("LogOnUserControl"); %>
</div>

<%: Page.User.Identity.Name %>代码显示当前登录的用户的登录名

如何显示用户的FirstName相反,哪个保存在配置文件中?

我们可以在 Controller 中读取它,如下所示:

ViewData["FirstName"] = AccountProfile.CurrentUser.FirstName;

例如,如果我们尝试这样做:

<%: ViewData["FirstName"] %>

它仅在 Controller 调用的页面上呈现,其中 ViewData["FirstName"]值已分配。

最佳答案

雷姆,

这是其中一种情况,拥有一个基本 Controller 可以解决您的“所有”问题(好吧,无论如何,有些问题)。在你的基本 Controller 中,你会有类似的东西:

public abstract partial class BaseController : Controller
{
    // other stuff omitted
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        ViewData["FirstName"] = AccountProfile.CurrentUser.FirstName;
        base.OnActionExecuted(filterContext);
    }
}

并在所有 Controller 中使用它,例如:

public partial class MyController : BaseController
{
    // usual stuff
}

或类似的。然后,您就可以始终将其用于所有 Controller 上的每个操作。

看看它是否适合你。

关于asp.net-mvc - ASP.NET MVC 显示配置文件中的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4036582/

相关文章:

c# - 将 HTML 放入 Html.ActionLink() 中,加上没有链接文本?

c# - MVC - 部分 View 不断显示相同的内容

asp.net-mvc - 从 VS2010 发布时出现allowDefinition ='MachineToApplication'错误(但仅在之前的构建之后)

c# - GetExternalLoginInfoAsync() loginInfo 返回 null

asp.net - 在 JavaScript 中正确引用 ASP.NET 用户控件中的控件

asp.net - 母版页的 Page_Load 方法触发两次

c# - 在 UserControl 中的 TextBox 具有焦点时处理 UserControl 中的箭头键以选择列表项

c# - UserControl 中的数据绑定(bind)在设计时不起作用?

asp.net - ASP.NET 中的 JQuery 与母版页

ASP.net MasterPage.master 不存在