現在のユーザーの Id を ASP ページのクエリのパラメーターとして使用するにはどうすればよいですか?
メンバーシップとロールのプロバイダーとして MySQL を使用しているため、現在のユーザーのユーザー ID にアクセスできるはずです。
このようなことをしたいのですが、「System.Web.Profile.DefaultProfile」には「Id」という名前のプロパティが含まれていませんというエラーが表示されます
- それが Id でない場合、それは何でしょうか?
クエリで @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>
しかし、もっと簡単な方法があるに違いないと考えずにはいられませんが、そうではないかもしれません。