[英]How to use User.Identity.Name as a parameter for SqlDataSource in ASP.NET?
[英]Pass parameter value to SqlDataSource ASP.NET User.Identity.Name
需要幫忙! 我無法解決為什么這不起作用。
頁:
<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'
UPD:
ControlID="suserParam"
錯了! 謝謝!
我建議添加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;
}
您正在使用ControlParameter
,它從頁面上存在的控件中提取參數值。 所以在這種情況下,它試圖找到id為suserParam
並引發錯誤,因為它無法找到它。
嘗試使用plain參數( asp:Parameter
)而不是ControlParameter。 另一個替代方法是使用SessionParameter
或編寫自己的自定義參數(請參閱此問題: 如何在SqlParameter中使用ASP.NET當前用戶名而無需代碼隱藏 )
您可以將其直接包含為標准參數:
<asp:Parameter Name="suserParam" Type="String" DefaultValue="<%=User.Identity.Name %>" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.