回 帖 发 新 帖 刷新版面

主题:关于用户控件的使用

小弟在用用户控件做一个热门商品浏览的时候碰到了一个问题,希望高手们来帮帮忙,谢谢了!
问题是这样的:
我先做了一个用户控件GoodsInfo(放在UserControl文件夹下),用于显示商品的信息。代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class UserControl_GoodsInfo : System.Web.UI.UserControl
{
    SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
    private string GoodsID;
    public string GOODSID
    {
        set
        {
            this.GoodsID = value.ToString();
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string sqlstr = "select * from tb_GoodsInfo where GoodsID='" + GoodsID + "'";
            sqlcon.Open();
            SqlCommand sqlcmd = new SqlCommand(sqlstr, sqlcon);
            SqlDataReader sqldr = sqlcmd.ExecuteReader();
            sqldr.Read();
            this.lblGoodsName.Text = sqldr.GetString(2);
            this.lblPrice.Text = sqldr.GetSqlInt32(4).ToString();
            this.lblOurPrice.Text = sqldr.GetSqlInt32(5).ToString();
            this.hLinkDetails.NavigateUrl = "GoodsDetails.aspx?GoodstID=" + this.GoodsID;
            this.imgGoods.ImageUrl = "/ShopTest/Image/" + sqldr.GetString(6);
        }
    }
}

然后我在另一个地方调用这个用户控件

在红色字体的地方显示错误:找不到类型或命名空间名称“GoodsInfo”(是否缺少 using 指令或程序集引用?)

在蓝色字体的地方显示错误:“System.Web.UI.ControlCollection.Add(System.Web.UI.Control)”最匹配的重载方法具有一些无效参数


private void HotGoods()
    {
        string sqlstr = "select top 4 GoodsID from tb_HotGoods order by HotGoodsID ASC";
        sqlcon.Open();
        SqlCommand sqlcmd = new SqlCommand(sqlstr, sqlcon);
        int i = 0;
        SqlDataReader sqldr = sqlcmd.ExecuteReader();
        System.Web.UI.WebControls.TableRow tr = new TableRow();
        while (sqldr.Read())
        {
            i = i + 1;
            System.Web.UI.WebControls.TableCell tc = new TableCell();
            [size=3][color=FF0000]GoodsInfo[/color][/size] gInfo = ([size=3][color=FF0000]GoodsInfo[/color][/size])this.LoadControl("GoodsInfo.ascx");
            gInfo.goodsID = sqldr.GetString(0);
            [size=3][color=0000FF]tc[/color][/size].Controls.Add(gInfo);
            tr.Controls.Add(tc);
            if (i % this.rowNum == 0)
            {
                this.tableHotGoods.Rows.Add(tr);
                tr = new TableRow();
            }
        }
        if (i % rowNum != 0)
        {
            this.tableHotGoods.Rows.Add(tr);
        }
        sqldr.Close();
        sqlcon.Close();
    }

是不是因为用户控件放在了文件夹了才发生这样的问题?

回复列表 (共6个回复)

沙发

因为它没有预编译,如果类在dll等预编译位置中就不会出现这类问题

板凳

那么该怎么解决这个问题呢

3 楼

推荐放进dll里面

4 楼

我把aspx和ascx的文件放在虚拟目录根目录下可以的,但是放在我在根目录里自己建立的文件夹的时候,就会报错,这之间有什么关系么

5 楼

引用项默认位于根目录

6 楼

看你是怎么引用此用户控件的,可以不需要生成dll,但是路径必须可以找到!

我来回复

您尚未登录,请登录后再回复。点此登录或注册