Параметр C # в файле cs не может быть обнаружен в aspx - PullRequest
0 голосов
/ 10 марта 2011

Итак, у меня есть условие для файла aspx:

<% if (yes)  
   {%>
   {
<div>
    <h1>hell yes!!</h1>
    <p>Welcome</p>
</div>
<%}%>/

и вот мой код на странице загрузки

protected void Page_Load(object sender, EventArgs e)
{
  if (accnt != null)
    {
        using (SqlConnection conn = new SqlConnection(connectionstring))
         {
            conn.Open();
            string strSql = "select statement"
                      :
                      :
            try
            {
                if (intExists > 0)
                {
                    bool yes= check(accnt);
                }
            }
            catch
            {
            }
        }
    }

Я получаю ошибку:

CS0103: The name 'yes' does not exist in the current context

Мне было интересно, что я делаю не так ...

Ответы [ 5 ]

2 голосов
/ 10 марта 2011

yes - локальная переменная; он не существует вне метода Page_Load.
Вам необходимо создать свойство public (или protected) в выделенном фрагменте кода.

1 голос
/ 10 марта 2011

мое предложение, поставьте это

public partial class _Default : System.Web.UI.Page 
{
    public string yes = "";

Затем положите

protected void Page_Load(object sender, EventArgs e)
{
  if (accnt != null)
    {
        using (SqlConnection conn = new SqlConnection(connectionstring))
         {
            conn.Open();
            string strSql = "select statement"
                      :
                      :
            try
            {
                if (intExists > 0)
                {
                    bool yes= check(accnt);
                }
            }
            catch
            {
            }
        }
    }

Надеюсь, это поможет

1 голос
/ 10 марта 2011

Если вы сделаете yes защищенной переменной уровня класса, она будет работать.Страница ASPX - это отдельный класс, который наследуется от класса, определенного в коде.

0 голосов
/ 10 марта 2011

yes локально для Page_Load Либо рекламируйте «да» в поле, либо еще лучше, сделайте его общедоступной собственностью вашего класса с частным сеттером:

public bool Yes { get; private set; }
0 голосов
/ 10 марта 2011

Вы объявляете yes в блоке if - это область действия переменной. Как только выполнение кода выйдет из блока if, ваша переменная yes будет поставлена ​​в очередь для сборки мусора, и вы не сможете получить к ней доступ.

Одним из способов решения этой проблемы является объявление открытого свойства Yes на уровне класса страницы, которое вы можете установить в методе Page_Load. Тогда вы сможете получить к нему доступ в .aspx. Пример:

public class MyPage : System.Web.UI.Page {
  public bool Yes()  { get; set; } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...