如何在文件后面的代码上获取asp:textbox值?

时间:2010-09-17 18:39:30

标签: c# asp.net

我得到的错误是:名称agentName在当前上下文中不存在“

在default.aspx上我有<asp:TextBox ID="agentName" runat="server" />

在文件后面的代码我有agentName.Text

但是说的是上面的错误信息。

当我传递像“John”这样的硬编码值时,它有效。我需要一种方法来识别代码隐藏的文本框。

由于

以下是我的代码:

Default.aspx的:

//code behind on @page directive
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="WebApplication2.WebForm1"%>

// Getting the value from XML
 Agentname.Text = root.SelectSingleNode("name").ChildNodes[0].Value; 

// Assigned a textbox
asp:TextBox ID="Agentname" runat="server" disabled="true" MaxLength="57" /
(removed angel bracket as SO is ignoring this line, don't know why)

//Code behind

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace WebApplication2
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        public void SaveXml(object sender, EventArgs e)
        {
            XDocument xmlDoc = XDocument.Load(Server.MapPath("Agent.xml"));
            Console.WriteLine("read XML");
            var person = xmlDoc.Descendants("agent");
            person.ElementAt(0).Value = "";

            xmlDoc.Element("agent").Add(new XElement("name", Agentname.Text));

            xmlDoc.Save(Server.MapPath("Agent.xml"));



        }
    }
}

2 个答案:

答案 0 :(得分:6)

尝试输入“”关键字,然后在后面的课程中搜索您的控件名称。但是你不能只说agentName.Text。您必须为其分配值或将值提取到变量中。如果它真正命名为'agentName',那么您应该能够解析并构建以下内容:

//Assign the textbox a value
this.agentName.Text = "John";

//Get value out of textbox value
string MyName = this.AgentName.Text;

此外,请查看您声明的页面后面的标记中的以下行:

 // Getting the value from XML
 Agentname.Text = root.SelectSingleNode("name").ChildNodes[0].Value;

好的,您可以将此代码放在页面的标记中,而不会识别它是服务器代码,其中一些“脚本”标记标识它是C#服务器端代码,如下所示:

<script language="C#" runat=server>
  // Getting the value from XML
  Agentname.Text = root.SelectSingleNode("name").ChildNodes[0].Value;
</script>

老实说,尽管你真的不想将这段代码放在标记中。它可能应该在Page_Load()事件或其他适当的事件之后,您已经尝试将数据从您提取的数据源填充到Agentname文本框中。

答案 1 :(得分:5)

有时设计器文件与aspx文件不同步。删除“YourPage.aspx.designer.cs”文件,然后右键单击解决方案资源管理器中的表单并选择“隐藏到Web应用程序”之类的内容

这将重新生成设计器以匹配当前的aspx。