将参数值传递给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"

是错误的!谢谢!

将参数值传递给SqlDataSource ASP.净User.Identity.Name

您正在使用ControlParameter,它从页面上存在的控件中提取参数值。因此,在本例中,它试图找到id为suserParam的控件,并抛出错误,因为它无法找到它。

尝试使用普通参数(asp:Parameter)而不是ControlParameter。另一种选择是使用SessionParameter或编写自己的自定义参数(参见这个问题:如何利用ASP。

我建议添加Hiddenfield控件并将User.Identity.Name分配给它,然后使SelectUserInfoHiddenfield控件获取参数值

顺便说一下,在你的代码中,我没有找到任何名为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 %>" />