1

如何使用当前用户的 Id 作为 asp 页面中查询的参数?

我使用 MySQL 作为成员资格和角色的提供者,因此应该能够访问当前用户的用户 ID。

我想做这样的事情,但我收到错误“System.Web.Profile.DefaultProfile”不包含名为“Id”的属性

  1. 如果不是Id,那会是什么?
  2. 在我的查询中链接到 @Id 的是 Name 还是 PropertyName?

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnectionString %>" ProviderName="<%$ ConnectionStrings:DefaultConnectionString.ProviderName %>" 
    SelectCommand="SELECT Date, Distance, LongestActive, ActiveTime, Km, StepCount, SiteUserId FROM UpMoves WHERE SiteUserId = @Id AND Date BETWEEN '2013-10-01' AND '2013-10-31' ORDER BY DATE ASC">
    <SelectParameters>
        <asp:ProfileParameter Name="Id" PropertyName="Id" Type="Int32" />
    </SelectParameters>
    

在 codingstills 评论和链接之后,我现在在 Page_Load 中有以下代码

        System.Web.Security.MembershipUser user = System.Web.Security.Membership.GetUser();
        System.Web.Profile.ProfileBase profile = System.Web.Profile.ProfileBase.Create(user.UserName);
        profile.SetPropertyValue("SiteUserId", user.ProviderUserKey);
        profile.Save();

并添加到我的网络配置中

  <properties>
    <add name ="SiteUserId" type="Int32"/>
  </properties>

现在这有效

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnectionString %>" ProviderName="<%$ ConnectionStrings:DefaultConnectionString.ProviderName %>" 
    SelectCommand="SELECT Date, Distance, LongestActive, ActiveTime, Km, StepCount, SiteUserId FROM UpMoves WHERE SiteUserId = @SiteUserId AND Date BETWEEN '2013-10-01' AND '2013-10-31' ORDER BY DATE ASC">
    <SelectParameters>
        <asp:ProfileParameter Name="SiteUserId" PropertyName="SiteUserId" Type="Int32" />
    </SelectParameters>

但我不禁想到必须有一种更简单的方法——但也许不是。

4

0 回答 0