【问题标题】:Pass parameter value to SqlDataSource ASP.NET User.Identity.Name将参数值传递给 SqlDataSource ASP.NET User.Identity.Name
【发布时间】:2013-01-08 06:19:46
【问题描述】:

需要帮助!我不明白为什么这不起作用。

页面:

<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 的控件上查找其值 - 这就是它所抱怨的 - 它找不到您在此处定义的控件.. ..

标签: c# asp.net parameter-passing sqldatasource


【解决方案1】:

您正在使用ControlParameter,它从页面上现有的控件中提取参数值。因此,在这种情况下,它会尝试查找 ID 为 suserParam 的控件,并在找不到时引发错误。

尝试使用普通参数 (asp:Parameter) 而不是 ControlParameter。另一种选择是使用SessionParameter 或编写您自己的自定义参数(请参阅此 SO 问题:How to utilize ASP.NET current user name in SqlParameter without code-behind

【讨论】:

  • 谢谢! 有效!
【解决方案2】:

我建议添加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;
}

【讨论】:

  • 谢谢! 'suserParam' 是我的错。
【解决方案3】:

您可以直接将其作为标准参数包含:

<asp:Parameter Name="suserParam" Type="String" DefaultValue="<%=User.Identity.Name %>" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多