在ASP.NET网页上显示C#变量

时间:2017-10-15 11:08:49

标签: c# asp.net

我正在ASP.NET中设计一个网站,我正在将Steam API集成到其中。我正在使用DotNetOpenAuth进行身份验证。我对如何访问和显示变量responseURI(第22行)感到困惑。每当我尝试使用以下方法在网页上显示变量时:

<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 个答案:

答案 0 :(得分: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%>