0

第一个问题是,我在正确的道路上吗?有更好的方法将它作为参数传递吗?如果我走在正确的道路上,请告诉我如何解决以下错误。

以下解决方案不能帮助我解决这个问题: HTTPContext.Current.User.Identity.Name not working inside a control?

我的代码:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MyDbConn %>" 
    SelectCommand="SELECT id, Bookname, RequestType, Requestor, RequestDate FROM Requests WHERE (Requestor LIKE '%' + @Requestor + '%')">
    <SelectParameters>
        <asp:Parameter DefaultValue= "<%# HttpContext.Current.User.Identity.Name.Split('\\')[1] %>" Name="Requestor" />
    </SelectParameters>
</asp:SqlDataSource>

给出以下错误:

错误详情

4

3 回答 3

1

试试这个我没有检查它

将 # 替换为 =

<asp:Parameter DefaultValue= "<%= HttpContext.Current.User.Identity.Name.Split('\\')[1] %>" Name="Requestor" />
于 2012-03-25T21:12:26.663 回答
0

好吧....它说你不能在这个控件上使用 <%# %> (数据绑定表达式)。

我不熟悉这个控件,但是您可以尝试在页面生命周期开始时设置 te 属性值。

于 2012-03-25T21:06:27.720 回答
0

试试这个

public Requests()
{
   this.Init += (_o, _e) => 
   {
       this.SqlDataSource1.Selecting += (o, e) =>
       {
           (o as SqlDataSourceView)
             .SelectParameters["Requestor"].DefaultValue = 
                      HttpContext.Current.User.Identity.Name;
       }
   }
}

或者

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            SqlDataSource1.SelectParameters["Requestor"].DefaultValue = 
                          HttpContext.Current.User.Identity.Name;
        }
    }
于 2012-03-26T08:16:47.397 回答