マークアップで宣言的にユーザーのIDをEntityDataSourceに直接バインドすることはできません。ただし、基本的に2つの回避策があります。
1つ目は簡単な方法ですが、コードビハインドが必要です。ジェネリックを使用して、asp:Parameter
その値をコードビハインドでユーザーのIDに設定できます。
マークアップ:
<asp:EntityDataSource ID="MyEntityDataSource" runat="server"
ConnectionString="name=MyContext"
DefaultContainerName="MyContext"
EntitySetName="MyObjectSet"
AutoGenerateWhereClause="False"
Where="it.Username = @Username"
<WhereParameters>
<asp:Parameter Name="Username" Type="String" />
</WhereParameters>
</asp:EntityDataSource>
コードビハインド:
protected void Page_Load(object sender, EventArgs e)
{
MyEntityDataSource.WhereParameters["Username"].DefaultValue =
User.Identity.Name;
}
2番目の方法は、カスタムパラメータを作成することです。その方法の例をここに示します。注:この例はに基づいていますが、SqlDataSourceではなくEntityDataSourceでasp:SqlDataSource
使用していることを確認すると、EntityDataSourceでも同様に機能するはずです。WhereParameters
SelectParameters