gpt4 book ai didi

asp.net - 如何在不使用代码隐藏的情况下在 SqlParameter 中使用 ASP.NET 当前用户名

转载 作者:行者123 更新时间:2023-12-02 21:31:31 26 4
gpt4 key购买 nike

如何获取当前用户名而不在代码隐藏中执行,仅使用 aspx 服务器标记?

在代码隐藏中我可以这样做:

Label4.Text = User.Identity.Name.ToString()

但我试图在没有代码隐藏的情况下做到这一点,如下所示:

<body>
<form id="form1" runat="server">
<div>
1. <asp:Label ID="Label1" runat="server" Text="<% User.Identity.Name %>"/><br />
2. <asp:Label ID="Label2" runat="server" Text="<%= User.Identity.Name %>"/><br />
3. <asp:Label ID="Label3" runat="server" Text="<%# User.Identity.Name %>"/><br />
4. <asp:Label ID="Label4" runat="server" Text="<%= Context.User.Identity.Name %>"/><br />
5. <asp:Label ID="Label5" runat="server" Text='<%# User.Identity.Name %>' /><br />
6. <span runat="server" ID="Span1"><%= User.Identity.Name %></span><br />
7. <asp:LoginName ID="LoginName1" runat="server" /><br />
8. <span><%# User.Identity.Name %></span><br />
9. <span><%= User.Identity.Name %></span><br />
10. <asp:Label ID="Label6" runat="server" Text='<%= User.Identity.Name %>' /><br />
</div>
</form>
</body>

我在第 6、7 和 9 行显示了用户名,但我确实想将控件的属性设置为此值,而不仅仅是将其显示在屏幕上。

可能吗?

背景:我正在开发一个快速应用程序,在页面上拖放控件,结果发现我只在页面后面的代码中包含了 1 行代码。该行将隐藏字段的值设置为页面加载中的当前用户名,以便我可以将该控件的值作为 sqlparameter 的参数传递。所以我想,既然我要走这条路(aspx 中的很多东西可能不应该在那里),我应该尝试与它保持一致。我通常不会这样做,但这次想这样做

最佳答案

在您写的评论中:

Also, if I could get any controls value set to this username I could then specify my sqlparameter is a controlparameter and that would get me where I need to be too.

您可以创建自定义参数类型。

首先在 App_Code 或 ASP.NET Server 控件 dll 中创建此类:

namespace ParameterDemo {
public class LoginParameter : Parameter {
public LoginParameter(string name)
: base(name)
{}

protected override object Evaluate(HttpContext context, Control control)
{
//UPDATED as suggested in Joels comments below...
//return HttpContext.Current.User.Identity.Name;
return context.Current.User.Identity.Name;
}
}
}

并将其注册到页面上(紧接在 @Page 指令之后)

<%@ Register TagPrefix="put" Namespace="ParameterDemo" %>

(或者选择在 web.config 中注册它以便在所有页面上使用)

...你可以像这样使用它:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
SelectCommand="SELECT * FROM MyTable WHERE SomeValue=@SomeParameter">
<SelectParameters>
<put:loginParameter name="SomeParameter" />
</SelectParameters>
</asp:ObjectDataSource>

如果这就是您正在寻找的内容,您应该考虑编辑原始问题...

关于asp.net - 如何在不使用代码隐藏的情况下在 SqlParameter 中使用 ASP.NET 当前用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1574554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com