Kei*_*ith 7 asp.net authentication
如何在代码隐藏中使用aspx服务器标签来获取当前用户名?
在代码隐藏中,我可以这样做:
Label4.Text = User.Identity.Name.ToString()
Run Code Online (Sandbox Code Playgroud)
但是我试图在没有代码隐藏的情况下这样做:
<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>
Run Code Online (Sandbox Code Playgroud)
我得到了第6行,第7行和第9行显示的用户名,但我真的想将控件的属性设置为该值,而不是仅仅在屏幕上显示它.
可能吗?
背景:我是掀起了一个快速的应用程序,并拖动页面上跌落的控制,并且事实证明,我只有有在网页的代码隐藏1线做到了.该行是在页面加载中将隐藏字段的值设置为当前用户名,因此我可以将该控件的值作为sql参数的参数传递.所以我认为,因为我走这条路(很多东西在aspx中可能不应该存在)我应该尝试与它保持一致.我通常不会这样做,但是这次想要
在你写的评论中写道:
此外,如果我可以将任何控件值设置为此用户名,那么我可以指定我的sqlparameter是一个控件参数,这将使我得到我需要的位置.
您可以创建自定义参数类型.
首先在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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在页面上注册(在@Page指令之后)
<%@ Register TagPrefix="put" Namespace="ParameterDemo" %>
Run Code Online (Sandbox Code Playgroud)
(或者在web.config中注册它以便在所有页面上使用)
......你可以像这样使用它:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
SelectCommand="SELECT * FROM MyTable WHERE SomeValue=@SomeParameter">
<SelectParameters>
<put:loginParameter name="SomeParameter" />
</SelectParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
如果这是您正在寻找的,您应该考虑编辑原始问题...
| 归档时间: |
|
| 查看次数: |
14268 次 |
| 最近记录: |