2011-03-02 133 views
1

我在我的asp.net應用程序中創建了一個名爲「Controls」的文件夾。在該文件夾中是用戶控件(例如1是DateRangePicker.ascx)。現在我創造我的應用程序代碼文件夾中的類,我想投的東西到DateRangePicker,命名空間問題.net

DateRangePicker drp = (CambitCMS.Controls.DateRangePicker)gvListing.Parent.Parent.FindControl("ucDateRangePicker"); 

而且我收到以下錯誤: 錯誤2類型或命名空間名稱「控制」不存在於命名空間'CambitCMS'中(您是否缺少程序集引用?)

如何在類中正確引用此用戶控件?

我希望我的「ListingsBasePage」類引用我的DateRangePicker usercontrol,但是如果我在整個用戶控件代碼周圍放置一個名稱空間,它會打破用戶控制,它說所有的東西,如文本框,標籤等不存在當命名空間包裝在代碼中時的當前上下文。

這裏是類 「ListingsBasePage」 我在哪裏triyng引用用戶控件

using System; 
using System.Data; 
using System.Configuration; 
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; 



public partial class ListingsBasePage : System.Web.UI.Page 
{ 

    protected void gvListing_OnPreRender(object sender, EventArgs e) 
    { 

     protected void gvListing_OnPreRender(object sender, EventArgs e) 
     { 

      GridView gvListing = (GridView)sender; 
      DateRangePicker drp = (CambitCMS.Controls.DateRangePicker)gvListing.Parent.Parent.FindControl("ucDateRangePicker"); 
      gvListing.PageSize = drp.recordsPerPage; 
     } 
    ........ 

的開始和的DatRangePickerControl

using System; 
using System.Web.UI.HtmlControls; 
using System.Web.UI; 
using System.Web.UI.WebControls; 


    public partial class Controls_DateRangePicker : System.Web.UI.UserControl 
    { 
     public String FromDate 
     { 
      get 
      { 
       return tbFromDate.Text; 
      } 
     } 
+0

你正在使用什麼類型的ASP.NET項目,網站或應用程序項目? – IrishChieftain 2011-03-02 20:16:34

+0

asp.net網站 – 2011-03-02 20:26:11

+0

你可以發佈DateRangePicker代碼的前幾行嗎?特別是名稱空間和類定義。 – 2011-03-02 20:29:02

回答

2

這出現一次又一次與網站項目。在網站項目中沒有名稱空間的概念,並且引用控件可能會有問題。通過一些第一鏈路上的評論轉到:

http://west-wind.com/weblog/posts/3016.aspx

http://forums.asp.net/p/1035070/1428363.aspx

http://www.codersbarn.com/post/2008/06/ASPNET-Web-Site-versus-Web-Application-Project.aspx (披露,這最後一個環節是我自己的博客)

嘗試把用戶控件在App_Code夾。更好的是,改用Web應用程序項目,你應該能夠避免這個問題。

UPDATE各地的網站項目的訪問用戶控件的問題

一種方法是內聯代碼,然後把在App_Code文件夾的用戶控制:

http://odetocode.com/blogs/scott/archive/2005/10/01/asp-net-2-0-user-controls-in-app_code.aspx

個人而言,這是一個sl ha的黑客,微軟不推薦它:

http://msdn.microsoft.com/en-us/library/t990ks23.aspx

我會創建它作爲自定義服務器控件(.cs)並將其放在App_Code文件夾中。這應該解決參考問題。最終,網站項目不適合認真工作,這只是其中一個原因。你最好的選擇是將其作爲一個Web應用程序項目 - 我想不出選擇網站模板的任何邏輯原因(編譯優化也可以通過WAP獲得)。

+0

它不會讓你在應用程序代碼文件夾中的用戶控件 – 2011-03-02 21:02:11

+0

然後嘗試在Web應用程序項目中測試此方案以確認它是與網站項目模板的問題... – IrishChieftain 2011-03-02 21:13:37

+0

它在一個網站項目罰款。他們希望我將該項目轉換爲網站應用程序。在這個類中有一個用戶控件「DateRangePicker」的強制轉換,但是在一個網站中我找不到引用它的方法。該類位於應用程序代碼文件夾中,並且userControls位於名爲「Controls」的文件夾中 – 2011-03-02 21:17:15

0

開始這是否「DateRangePicker.ascx.cs 「實現」CambitCMS.Controls.DateRangePicker「類還是」CambitCMS.DateRangePicker「類?確保命名是正確的是這裏的一點。


「Controls_DateRangePicker」是不一樣的「CambitCMS.Controls.DateRangePicker」是爲什麼編譯器報告錯誤。在這兩個文件中使用相同的類名,它應該沒問題,但現在看起來不是那樣。


如果網站被設置爲一個Web應用程序,它可能要被編譯,以便智能感知可以拿起,如果你改變它在C#代碼,後面你必須更新類的名稱。 ascx文件可能是您的其他錯誤所在。

+0

請參閱上面我編輯的問題 – 2011-03-02 20:31:01

+0

這does not工作Controls_DateRangePicker不在intelisense由於某種原因 – 2011-03-02 20:44:11