Элемент управления Loginview: как ссылаться на элементы управления на стороне сервера внутри loggedintemplate

В событии PageLoad формы я не могу ссылаться на элемент управления на стороне сервера в зарегистрированном шаблоне. Что мне не хватает. Поэтому, когда я вошел в систему, я покажу элемент управления текстовым полем, в противном случае я покажу текст вроде «Пожалуйста, войдите, чтобы сделать soso ..»

Пожалуйста помоги ..


person dotnet-practitioner    schedule 21.03.2009    source источник
comment
Кстати .. это для контроля входа в систему.   -  person dotnet-practitioner    schedule 21.03.2009


Ответы (2)


вы можете использовать метод FindControl в элементе управления loginview, чтобы получить их ...

TextBox t = (TextBox)LoginView2.FindControl("TextBox1");
string s = null;

if (t != null)
{
    // textbox is in the current scope of the LoginView
    s = t.text;
}
else
{
    // the textbox is not in the current scope of the LoginView.
}

Однако это будет работать только для элементов управления, которые в настоящее время находятся в отображаемом представлении элемента управления LoginView. Вам нужно будет проверить, что вы показываете вошедшее представление, прежде чем пытаться захватить текстовое поле, или вы также можете проверить, что FindControl не возвращает нулевую ссылку.

person Scott Ivey    schedule 21.03.2009
comment
Это не работает. Я пробовал это ... TextBox t = (TextBox) LoginView2.FindControl (TextBox1); строка s = t.Text; и это ошибка, которую я получаю ... Ссылка на объект не установлена ​​на экземпляр объекта. - person dotnet-practitioner; 21.03.2009
comment
вам может потребоваться пройти через иерархию элементов управления, чтобы получить текстовое поле, если оно вложено в другие элементы управления. это ужасный способ получить доступ к элементам управления, потому что ваш доступ должен быть строго типизированным, а не основанным на строке (TextBox1). Я нашел несколько методов для правильного доступа к этим элементам управления, и оказалось, что на самом деле нет хорошего, особенно если их много. если вы хотите запретить своим пользователям доступ к страницам, когда они не вошли в систему, посмотрите здесь: поддержка .microsoft.com / kb / 815151 - person user3308043; 04.06.2014

Если у вас по-прежнему возникают проблемы со ссылкой на скрытый объект, возможно, вы вводите для него неправильное значение. Допустим, у вас есть раскрывающийся список «DropDownList1», вложенный в loggedInView. Вы должны установить новый объект, который использует метод FindControl класса DropDownList, а затем использовать этот НОВЫЙ объект:

DropDownList d = (DropDownList)ucLogin.FindControl("DropDownList1");

       bool answer = d.SelectedValue.StartsWith("S");
       if (answer == true)
       {
           Response.Redirect("~/MemberPages/ChangePassword.aspx");
       }

В моем случае я перенаправляю пользователя на новую страницу, если значение выбранного объекта начинается с буквы «S».

У меня работает, и я надеюсь, что это сработает для вас!

  • Бен севардс
person Ben Sewards    schedule 13.01.2012