Я новичок в ASP.NET и С#, я в основном работал с Java. Я хочу динамически добавлять узлы в древовидное представление. Я следил за несколькими учебниками, но всякий раз, когда я их реализую, они не работают. Я продолжаю получать сообщение об ошибке: "Имя" MyTreeView "не существует в текущем контексте".
Здесь код С#:
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace LocalTest
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
MyTreeView.Nodes.Add(new TreeNode("Node1"));
MyTreeView.Nodes[0].ChildNodes.Add(new TreeNode("ChildNode"));
}
}
}
}
И HTML/ASP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="MyTreeView" Runat="server">
</asp:TreeView>
</div>
</form>
</body>
</html>
"MyTreeView" - это идентификатор дерева, содержащегося в файле Default.aspx.
Несколько руководств, за которыми я следовал, похоже, получают доступ к древовидной структуре напрямую с его идентификатором, как показано выше, что делает для меня очень мало смысла. Например, если бы я сделал это в Android, мне пришлось бы использовать findViewById и установить связь между XML и объектом.
У кого-нибудь есть предложения? Я немного потрудился вокруг этого сайта, и я нашел похожие проблемы, но я не могу получить четкий ответ.
Спасибо.
Посмотрев на код выше, вы используете то, что известно как ASP.Net WebForms
где есть элементы управления на стороне сервера (например, <asp:TreeView ID="MyTreeView" Runat="server">
)
"Page" (html aspx) нужно как-то "пронести" код (С# файл). Для этого потребуется директива "server-side":
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebFormsApplication.WebForm1" %>
<!DOCTYPE html>
//...the rest of the html goes here plus web controls, etc.
В этот момент вы можете увидеть такие вещи, как Inherits="WebFormsApplication.WebForm1"
который сопоставляется с Class
:
namespace WebFormsApplication
{
public partial class WebForm1 : System.Web.UI.Page
....
найденный в файле WebForm1.aspx.cs
, также в директиве CodeBehind="WebForm1.aspx.cs"
Так что вуаля :)
установить связь между XML и объектом.
Hth...
Кажется, вам не хватает Page
директиву на странице asp.net
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
У вас нет элемента управления TreeView в default.aspx. Он находится в файле.html, а default.aspx.cs не может видеть элемент управления TreeView.