0

这是我的所有代码:

Site.Master

<%@ Master Language="C#" AutoEventWireup="true"
CodeBehind="Site.master.cs" Inherits="WebApplication1.SiteMaster" %>

<!DOCTYPE html>
<html>
    <head runat="server">
        <title></title>
        <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
        <asp:ContentPlaceHolder ID="HeadContent" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form runat="server">
            <div class="main">
                <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
            </div>
        </form>
    </body>
</html>

站点.Master.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

默认.aspx

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="WebApplication1._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
</asp:Content>

默认.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ListBox ListBox1 = new ListBox();
            ListBox1.FindControl("ListBox1");
            ListBox1.Items.Add(new ListItem("Hello"));
        }
    }
}

问题:为什么我的 ListBox 没有填充?

运行代码时,我得到一个带有一个完全空的小框的页面。

我已经尝试了以下方法,我会告诉你结果 -

  • 消除

ListBox ListBox1 = new ListBox();
ListBox1.FindControl("ListBox1");

结果:当前上下文中不存在名称“ListBox1”

  • 将 ListBox1 的引用手动添加到设计器中。

结果:对象引用未设置为对象的实例。

要修复该错误,添加该行ListBox ListBox1 = new ListBox();有效,但仍不显示。

有任何想法吗?谢谢。

4

2 回答 2

2

你应该只需要...

protected void Page_Load(object sender, EventArgs e)
        {
            ListBox1.Items.Add(new ListItem("Hello", "H"));
        }

也看这个链接

编辑:相同的代码对我有用。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

于 2013-08-14T13:42:26.010 回答
0

要直接回答您为什么ListBox1没有被填充的问题:

protected void Page_Load(object sender, EventArgs e)
{
     ListBox ListBox1 = new ListBox();  //You are creating a new local ListBox named ListBox1.
     ListBox1.FindControl("ListBox1");  //You are trying to find the Control named ListBox1 that is held within the Control ListBox1 (and not doing anything with the result of the search)
     ListBox1.Items.Add(new ListItem("Hello"));  //You are adding a new ListItem to the local ListBox1.
}

正如 christiandev 所说,你应该能够做到这一点:

protected void Page_Load(object sender, EventArgs e)
{
     ListBox1.Items.Add(new ListItem("Hello"));
}

我不知道为什么您似乎无法访问 aspx 页面上的 ListBox1。

于 2013-08-14T14:09:06.147 回答