会话变量 - 该名称在当前上下文中不存在

时间:2014-05-28 19:04:38

标签: c# asp.net web-controls runatserver

我不断收到错误“名称”用户名“在当前上下文中不存在。正如您所看到的,”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> 

5 个答案:

答案 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"添加到标签控件?