Как вы ссылаетесь на элементы HTML / ASP с объектами C #?

1

Я новичок в 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 и объектом.

У кого-нибудь есть предложения? Я немного потрудился вокруг этого сайта, и я нашел похожие проблемы, но я не могу получить четкий ответ.

Спасибо.

Теги:

3 ответа

2
Лучший ответ

Посмотрев на код выше, вы используете то, что известно как 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...

  • 0
    Это устранило ошибку. Это было самым ясным объяснением из множества учебников. Большое спасибо.
  • 0
    @Cian - Круто! Будь "мягким" со мной, когда я углублюсь в мир Java / Droid, где у меня, вероятно, будут те же вопросы :)
0

Кажется, вам не хватает Page директиву на странице asp.net

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
0

У вас нет элемента управления TreeView в default.aspx. Он находится в файле.html, а default.aspx.cs не может видеть элемент управления TreeView.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню