我不断收到错误“名称”用户名“在当前上下文中不存在。正如您所看到的,”UserName“在我的代码页面后面明确定义,我正在引用我的页面。那么为什么会说它不存在?
这是我的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>
答案 0 :(得分:3)
如果您想从后面的代码访问它,您的输入框需要runat=server
。
<input id="UserName" name="UserName" type="text" value="" runat=server />
否则您将收到UserName不存在的错误,如您所述。
答案 1 :(得分:1)
你应该有&#39; runat =&#34;服务器&#34;&#39;在UserName中
<input id="UserName" name="UserName" type="text" value="" runat="server" />
答案 2 :(得分:0)
“UserName”在我的代码背后明确定义
不,它不是 - 您有一个名为UserName
的客户端控件,但代码隐藏中没有任何内容。您可以通过在表单和控件中添加“runat =”server“'或在代码隐藏中引用表单变量来使其成为服务器控件:
protected void btnLogOn_Click(object sender, EventArgs e)
{
Session["SubName"] = Request["UserName"]; // pull value from form variable
}
答案 3 :(得分:0)
对应于该控件的UserName对象需要出现在您正在处理的页面的designer.cs文件中。 这将在页面保存时自动生成,但仅当您将控件创建为服务器端控件时才会生成。 因此用runat =&#34; server&#34;标记输入控件。应该做的。
答案 4 :(得分:-1)
将runat="server"
添加到标签控件?