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>
    

コーディングスティルのコメントとリンクに従って、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