2011-10-06 93 views
1

我有代碼如下加載用戶控制動態

string[] keys = { "myCustomUserControl.ascx", "myCustomUserControl.ascx.cs", "myCustomUserControl.ascx.designer.cs" }; 

      string customUserControlName = CommonDataCalls.GetCustomUserControlName(keys); 

      UserControl objUserControl = (UserControl)this.LoadControl("~/UserControls/" + userControlName); 
      userControlPlaceHolder.Controls.Add(objUserControl); 

GetCustomUserControlName的定義如下

public string GetCustomUserControlName(string[] keys) 
    { 
     try 
     { 
      string userConrolsPhysicalPtah = System.Web.HttpContext.Current.Server.MapPath("~/UserControls/"); 
      DataTable objDataTable = new DataTable(); 
      foreach (string key in keys) 
      { 
       objRequestVO.addObject("ACA_KEY", key); 
       CResponseVO objResponseVO = (CResponseVO)objGateway.ExecuteBusinessService(CConstant.ADMIN, CConstant.ASSEMBLY_INFO, CConstant.SELECT, objRequestVO); 
       DataSet objDataSet = (DataSet)objResponseVO.getObject("RES_DS"); 
       cUserTrce objGeneral = new cUserTrce(); 
       if (!objGeneral.IsNullOrEmptyDataset(objDataSet)) 
       { 
        if (objDataTable.Rows.Count == 0) 
        { 
         objDataTable = objDataSet.Tables[0].Clone(); 
        } 
        objDataTable.Rows.Add(objDataSet.Tables[0].Rows[0].ItemArray); 
       } 
      } 

      if (objDataTable != null && objDataTable.Rows.Count == 3) 
      {     
       string containerName = "usercontrols"; 
       foreach (DataRow dr in objDataTable.Rows) 
       { 
        string userControlFileBlobUrl = dr["ACA_ASSEMBLY_PATH"].ToString(); 
        string userControlFileName = dr["ACA_CLASS_NAME"].ToString(); 

        Storage.Blob blobHandler = new Storage.Blob(); 
        Stream blobstream = blobHandler.GetBlob(userControlFileBlobUrl, containerName); 
        if (!(File.Exists(userConrolsPhysicalPtah + userControlFileName))) 
        { 
         MemoryStream ms = (MemoryStream)blobstream; 
         FileStream outStream = File.OpenWrite(userConrolsPhysicalPtah + userControlFileName); 
         ms.WriteTo(outStream); 
         outStream.Flush(); 
         outStream.Close(); 
        } 
       } 



       string customUserControlName = (from DataRow row in objDataTable.Rows 
               where row["ACA_KEY"].ToString() == keys[0] 
               select row["ACA_CLASS_NAME"].ToString()).First(); 

       return customUserControlName; 
      } 

      else 
      { 
       return null; 
      } 
     } 
     catch 
     { 
      return null; 
     } 

    } 

的mithod基本上覆制用戶控制,以在運行虛擬路徑時間 。

在aspx.cs頁面中,我嘗試動態加載它。

但我可以看到該文件正在複製到虛擬路徑,但這。負載控制給我例外說無法加載類型'myCustomUserControl'。

我正在使用azure web角色
這裏有什麼問題?

回答