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

Jas*_*ero 0 c# asp.net

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

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

我有文件背后的代码 agentName.Text

但是说上面的错误信息.

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

谢谢

以下是我的代码:

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"));



        }
    }
}
Run Code Online (Sandbox Code Playgroud)

atc*_*way 6

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

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

//Get value out of textbox value
string MyName = this.AgentName.Text;
Run Code Online (Sandbox Code Playgroud)

另外,请查看以下行,您在页面后面的标记中说明:

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

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

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

老实说,虽然你真的不想将这些代码放在标记中.在您尝试将数据提取到代理名称文本框中的XML源填充之后,它应该位于Page_Load()事件或其他适当的事件中.


asa*_*yer 5

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

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