您不能在标记中以声明方式将用户的身份直接绑定到 EntityDataSource。但基本上有两种解决方法:
第一个是更简单的,但需要代码隐藏。您可以使用泛型asp:Parameter
并在代码隐藏中将其值设置为用户的身份:
标记:
<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;
}
第二种方法是创建自定义参数。此处显示了如何执行此操作的示例。注意:该示例基于 a asp:SqlDataSource
,但如果您确保WhereParameters
在 EntityDataSource 而不是SelectParameters
SqlDataSource 中使用,它应该也适用于 EntityDataSource。