Согласно комментарий обновления Prerak K (так как удаленный):
я предполагаю, что не представил вопрос правильно.
ситуация - это: Я хочу загрузить данные в глобальную переменную на основе значения управления. Я не хочу изменять значение управления от дочернего потока. Я не собираюсь делать это когда-либо от дочернего потока.
Поэтому только доступ к значению так, чтобы соответствующие данные могли быть выбраны от базы данных.
решение, которое Вы хотите тогда, должно быть похожим:
UserContrl1_LOadDataMethod()
{
string name = "";
if(textbox1.InvokeRequired)
{
textbox1.Invoke(new MethodInvoker(delegate { name = textbox1.text; }));
}
if(name == "MyName")
{
// do whatever
}
}
Делают Вашу серьезную обработку в отдельном потоке прежде , Вы пытаетесь переключиться назад на поток управления. Например:
UserContrl1_LOadDataMethod()
{
if(textbox1.text=="MyName") //<<======Now it wont give exception**
{
//Load data correspondin to "MyName"
//Populate a globale variable List which will be
//bound to grid at some later stage
if(InvokeRequired)
{
// after we've done all the processing,
this.Invoke(new MethodInvoker(delegate {
// load the control with the appropriate data
}));
return;
}
}
}
Этот код выполняет свою работу. В событии Page_Load Login.aspx:
Membership.ValidateUser("<userName>", "<password>")
FormsAuthentication.RedirectFromLoginPage("<userName>", True)
Примечание: Членство
использует ссылку System.Web.Security
.
В методе Application_AuthenticateRequest (также известном как событие Applications AuthenticateRequest) в global.asax добавьте код, который проверяет, запускаете ли вы сайт в отладчике (что-то вроде system.Diagnostics.Debugger.IsAttached), и, если да, создайте билет входа, создайте файл cookie и прикрепите его к сеансу. Библиотека FormsAuthentication предоставляет то, что вам нужно, если у поставщика членства ее нет.
Could you just put code in the load event to set the username and password strings and fire the onclick event of the login button?
В качестве альтернативы существуют также такие инструменты, как Selenium IDE, который является плагином для Firefox. Его основная цель - обеспечить своего рода тестирование пользовательского интерфейса. Для этого вы можете записывать действия, выполняемые в пользовательском интерфейсе. Что вы можете сделать, так это записать учетные данные, которые вы вводите для тестового пользователя, один раз и сохранить их. В следующий раз, когда вы вернетесь, вы выполните сценарий, который автоматически вводит необходимую информацию.
Существуют и другие инструменты, специально предназначенные для автоматического заполнения формы на веб-странице. Селен больше рассматривается как среда тестирования, но я также использовал его для таких целей. Конечно, это всего лишь обходной путь.
В событии page_load вы можете использовать FormsAuthentication.SetAuthCookie:
FormsAuthentication.SetAuthCookie("username", false);
Джефф прав, вы можете сделать это через метод global.asax:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if(System.Diagnostics.Debugger.IsAttached && User == null)
{
FormsAuthentication.SetAuthCookie("dmike", false);
}
}
ура
FormsAuthentication.RedirectFromLoginPage использует defaultUrl, чтобы определить, где для перенаправления после входа в систему. Поэтому убедитесь, что у вас есть действующий URL, отличный от вашего LoginPage.aspx.
FormsAuthentication.RedirectFromLoginPage("userName", True);
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx"
...
defaultUrl="~/AnyFolder/PageAfterLogin.aspx"
... />
</authentication>
Надеюсь, это немного поможет.