簡體   English   中英

在SQL查詢中獲取User.Identity.GetUserId

[英]Get User.Identity.GetUserId in SQL query

試圖獲取當前登錄的用戶userid並在來自backcode的SQL查詢中使用它來填充gridview,但是它不能解決我正在做錯的任何事情。 我不斷收到空值錯誤。 我也試圖只使用Microsoft.AspNet.Identity

頁面加載

if (!IsPostBack)
    {
        SqlDataSource SqlDataSource1 = new SqlDataSource();
        SqlDataSource1.ID = "SqlDataSource1";
        this.Page.Controls.Add(SqlDataSource1);
        SqlDataSource1.InsertParameters["luser"].DefaultValue = User.Identity.GetUserId();
        SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        SqlDataSource1.SelectCommand = "SELECT top 3 UserId, Friending from Friendreq Where Friending = @luser";
        GridView1.DataSource = SqlDataSource1;
        GridView1.DataBind();
    }

更新:

通過將請求直接添加到SQL查詢中,我可以獲得所需的結果。 有什么理由我不應該添加它嗎?

 SqlDataSource SqlDataSource1 = new SqlDataSource();
    SqlDataSource1.ID = "SqlDataSource1";
    this.Page.Controls.Add(SqlDataSource1);

    SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    SqlDataSource1.SelectCommand = "SELECT top 3 UserId, Friending from Friendreq Where Friending = '"+User.Identity.GetUserId()+"'";
    GridView1.DataSource = SqlDataSource1;
    GridView1.DataBind();

解決方案= Friending = '"+User.Identity.GetUserId()+"'";

如果要嘗試從HttpContext獲取用戶身份,請嘗試使用以下代碼。 名稱屬性中的身份存儲庫用戶名/標識(基於您的邏輯)。

另外,對象引用錯誤即將到來,因為您沒有在InsertParameter中添加“ luser”,而是嘗試為其設置默認值。 我添加了此SqlDataSource1.InsertParameters.Add(new Parameter("luser")); 在使用前確保它具有參數

if (!IsPostBack)
    {
        SqlDataSource SqlDataSource1 = new SqlDataSource();
        SqlDataSource1.ID = "SqlDataSource1";
        this.Page.Controls.Add(SqlDataSource1);
        SqlDataSource1.InsertParameters.Add(new Parameter("luser"));
        SqlDataSource1.InsertParameters["luser"].DefaultValue = HttpContext.Current.User.Identity.IsAuthenticated ? HttpContext.Current.User.Identity.Name : String.Empty;
        SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        SqlDataSource1.SelectCommand = "SELECT top 3 UserId, Friending from Friendreq Where Friending = @luser";
        GridView1.DataSource = SqlDataSource1;
        GridView1.DataBind();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM