2017-10-15 115 views
0

我正在ASP.NET中設計一個網站,並將Steam API集成到它中。我正在使用DotNetOpenAuth進行身份驗證。我很困惑我如何訪問並顯示變量responseURI(第22行)。每當我嘗試使用該網頁顯示變量:在ASP.NET網頁上顯示C#變量

<p><%=responseURI%></p> 

我得到一個消息,指出:

「responseURI」這個名字不會在當前上下文中。

這裏是我的C#

using DotNetOpenAuth.OpenId.RelyingParty; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class loginPage : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     var openid = new OpenIdRelyingParty(); 
     var response = openid.GetResponse(); 

     if (response != null) 
     { 
      switch (response.Status) 
      { 
       case AuthenticationStatus.Authenticated: 
        // do success 
        var responseURI = response.ClaimedIdentifier.ToString(); 
        break; 

       case AuthenticationStatus.Canceled: 
       case AuthenticationStatus.Failed: 
        // do fail 
        break; 
      } 
     } 
     else 
     { 
      using (OpenIdRelyingParty openidd = new OpenIdRelyingParty()) 
      { 
       IAuthenticationRequest request = openidd.CreateRequest("http://steamcommunity.com/openid"); 
       request.RedirectToProvider(); 
      } 
     } 
    } 
} 
+1

的可能的複製[如何調用一個變量在後面的代碼到aspx頁面(https://stackoverflow.com/questions/7406961/how-to-call-a-variable-in-code-behind-to-aspx-page) – NineBerry

回答

4

因爲它不會在頁的背景下存在的,只有在switch案件上下文。 Page是類,只是使其成爲一個類級別的值。 (我相信能見度必須至少protected,因爲從代碼隱藏頁顯示的頁面「繼承」。)

protected string ResponseURI { get; set; } 

這將在C#中被放置在類級別,像任何其他財產。例如:

protected string ResponseURI { get; set; } 

protected void Page_Load(object sender, EventArgs e) 
{ 
    //... 
} 

然後設置,在你的代碼,而不是:

this.ResponseURI = response.ClaimedIdentifier.ToString(); 

,並顯示在頁面上:

<%=ResponseURI%> 
+0

所以,在這裏我想補充一點的代碼,你給我? – SlothGod

+0

@SlothGod:當然,在你的代碼隱藏中。該屬性是一個類級別的成員,其他兩行代替當前的'responseURI'變量的當前嘗試用法。 – David

+0

我的意思是我的代碼在哪裏?什麼線?很抱歉,如果我似乎無禮,我的意思不是,我只是讀回我的意見,它看起來比我的意思是說,它 – SlothGod