Переменная сеанса - имя не существует в текущем контексте
Я продолжаю получать сообщение об ошибке "Имя" Имя пользователя "не существует в текущем контексте. Как вы можете видеть," Имя пользователя "четко определено в моем коде позади страницы, и я ссылаюсь на свою страницу. Так почему он говорит, что это делает не существует?
Вот мой C# -
public partial class Account_Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{}
protected void btnLogOn_Click(object sender, EventArgs e)
{
Session["SubName"] = UserName.Text;
}
}
Вот мой HTML -
<p>
Please enter your username and password.
</p>
<form action="/Account/LogOn" method="post">
<div>
<fieldset>
<legend>Account Information</legend>
<div class="editor-label">
<label for="UserName">User name</label>
</div>
<div class="editor-field">
<input id="UserName" name="UserName" type="text" value="" />
</div>
<div class="editor-label">
<label for="Password">Password</label>
</div>
<div class="editor-field">
<input id="Password" name="Password" type="password" />
</div>
<p>
<input id="btnLogOn" type="submit" value="Log On" />
</p>
</fieldset>
</div>
</form>
</div>
5 ответов
Ваше поле ввода должно иметь runat=server
если вы хотите получить к нему доступ из кода.
<input id="UserName" name="UserName" type="text" value="" runat=server />
В противном случае вы получите сообщение об ошибке, что UserName не существует, как вы уже упоминали.
Вы должны иметь 'runat="server"' в UserName
<input id="UserName" name="UserName" type="text" value="" runat="server" />
"UserName" четко определено в моем коде позади
Нет, это не так - у вас есть клиентский элемент управления UserName
но ничего в коде позади. Вы можете сделать его серверным элементом управления, добавив 'runat = "server"' к форме и элементу управления, или сослаться на переменную формы в выделенном фрагменте кода:
protected void btnLogOn_Click(object sender, EventArgs e)
{
Session["SubName"] = Request["UserName"]; // pull value from form variable
}
Объект UserName, соответствующий элементу управления, должен присутствовать в файле designer.cs страницы, над которой вы работаете. Это будет автоматически сгенерировано при сохранении страницы, но только если вы создадите свой элемент управления в качестве элемента управления на стороне сервера. Таким образом, маркировка элемента управления вводом runat="server" должна помочь.