2017-10-15 108 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