我只是在学习 asp.net,所以我可能是错误的,所以如果有更好的方法,请告诉我。
我有一个“门户”,用户在其中登录,然后他们有一个他们管理的所有网站的下拉列表。
我想使用我创建的基于登录用户的存储过程填充下拉框。
我使用了内置的 createuserWizard,它将用户存储在数据库中。我创建了另一个包含所有站点的表和第三个表来将站点和用户链接在一起。
这是下拉列表
<code>
<asp:DropDownList ID="DropDownListAClient" runat="server"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
DataSourceID="SqlDataSourceSitePicker" DataTextField="SiteName"
DataValueField="SiteName">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSourceSitePicker" runat="server"
ConnectionString="<%$ ConnectionStrings:MainAppDB %>"
SelectCommand="portal_SitePicker" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="portaluserid" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</code>
这是存储过程的代码
<code>
ALTER PROCEDURE [dbo].[portal_SitePicker]
-- Add the parameters for the stored procedure here
@portaluserid varchar
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT SiteName
FROM dbo.aspnet_UserMap, dbo.Sites
WHERE dbo.Sites.SiteID = dbo.aspnet_UserMap.SiteID
and dbo.aspnet_UserMap.UserID = @portaluserid
END
</code>
如果我测试存储的过程,它会提取正确的站点,但我不确定如何从当前登录的用户那里获取用户 ID 值。
有什么建议么?