将参数值传递给SqlDataSource ASP.净User.Identity.Name
本文关键字:User Identity Name ASP SqlDataSource 参数 值传 | 更新日期: 2023-09-27 17:51:01
需要帮助!我不明白为什么这不起作用。
页面:
<asp:SqlDataSource ID="SelectUserInfo" runat="server" ConnectionString="<%$ ConnectionStrings:TradeRelay %>" SelectCommand="admin_userinfo" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter Name="suser" Type="String" DefaultValue="Anonymous" />
</SelectParameters>
</asp:SqlDataSource>
后台代码:
protected void Page_Init(object sender, EventArgs e)
{
SelectUserInfo.SelectParameters["suser"].DefaultValue = User.Identity.Name;
}
错误:无法在ControlParameter 'suser'中找到控件'suserParam'
乌利希期刊指南:
ControlID="suserParam"
是错误的!谢谢!
您正在使用ControlParameter
,它从页面上存在的控件中提取参数值。因此,在本例中,它试图找到id为suserParam
的控件,并抛出错误,因为它无法找到它。
尝试使用普通参数(asp:Parameter
)而不是ControlParameter。另一种选择是使用SessionParameter
或编写自己的自定义参数(参见这个问题:如何利用ASP。
我建议添加Hiddenfield
控件并将User.Identity.Name
分配给它,然后使SelectUserInfo
从Hiddenfield
控件获取参数值
suserParam
的控件。<asp:HiddenField runat="server" ID="suserParam"/>
<asp:SqlDataSource ID="SelectUserInfo" runat="server" ConnectionString="<%$ ConnectionStrings:TradeRelay %>" SelectCommand="admin_userinfo" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="suserParam" Name="suser" Type="String" DefaultValue="Anonymous" />
</SelectParameters>
</asp:SqlDataSource>
这是
后面的代码protected void Page_Load(object sender, EventArgs e)
{
suserParam.value = User.Identity.Name;
}
您可以直接将其作为标准参数包含:
<asp:Parameter Name="suserParam" Type="String" DefaultValue="<%=User.Identity.Name %>" />