簡體   English   中英

將參數值傳遞給SqlDataSource ASP.NET User.Identity.Name

[英]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然后使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;
}

您正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM