我正在使用VS 2013开发Web窗体应用程序。在“MyReports.aspx”中,我希望用户只能看到他/她发布的报告。在SqlDataSource SelectParameters中,我定义了UserID参数,然后在代码隐藏中传递UserId。但是,我怎样才能直接在aspx中完成它?
我尝试添加Microsoft.AspNet.Identity命名空间
<%@ Import Namespace="Microsoft.AspNet.Identity" %>
然后设置参数如:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT * FROM [ReportsByIssuingUserView] WHERE ([UserID]=@UserID)">
<SelectParameters>
<asp:Parameter Name="UserID" Type="String" DefaultValue="<%: Context.User.Identity.GetUserId() %>"/>
</SelectParameters>
</asp:SqlDataSource>
没有运气......
我现在的代码如下,效果很好:
ASPX:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT * FROM [ReportsByIssuingUserView] WHERE ([UserID]=@UserID)">
<SelectParameters>
<asp:Parameter Name="UserID" Type="String"/>
</SelectParameters>
</asp:SqlDataSource>
CS:
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.SelectParameters["UserID"].DefaultValue = Context.User.Identity.GetUserId();
}
有没有办法不使用代码隐藏呢?
谢谢!
答案 0 :(得分:1)
在ASPX页面中使用内联的<%= Context.User.Identity.GetUserId() %>
表达式语法。