我得到的错误是:名称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)
尝试输入' 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()事件或其他适当的事件中.
有时,设计器文件与aspx文件不同步.删除"YourPage.aspx.designer.cs"文件,然后右键单击解决方案资源管理器中的表单并选择"隐藏到Web应用程序"之类的内容
这将重新生成设计器以匹配当前的aspx.
| 归档时间: |
|
| 查看次数: |
12550 次 |
| 最近记录: |