我得到的错误是:名称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"));
}
}
}
答案 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。