2016-11-23 36 views
0

使用基本DAL 2從具有tabid的表中獲取數據。還想通過DNN API獲取Tab Url。我可以加入到Tabs表中,但想要使用api。DNN DAL 2水合物和其他

這是我的模型。

[TableName("My_Products")] 
 
    [PrimaryKey("ProductId")] 
 
    [Cacheable("My_Products_", CacheItemPriority.Normal, 20)] 
 

 
    public class ProductInfo  
 
    { 
 
     public ProductInfo() 
 
     { 
 
      Langs = new List<ProductLangInfo>(); 
 
     } 
 
     public int ProductId { get; set; } 
 
     [ReadOnlyColumn] 
 
     public string ProductImage { get; set; } 
 
     public int LineID { get; set; } 
 
     [ReadOnlyColumn] 
 
     public string Culture { get; set; } 
 
     [ReadOnlyColumn] 
 
     public string ProductName { get; set; } 
 
     [ReadOnlyColumn] 
 
     public string ProductShortDesc { get; set; } 
 
     [ReadOnlyColumn] 
 
     public int TabId { get; set; } 
 
     [ReadOnlyColumn] 
 
     public string ProductURL { get; set; } //GET THIS FROM API 
 
     [ReadOnlyColumn] 
 
     public List<ProductLangInfo> Langs { get; set; } 
 
    }

這是我的控制器

public IEnumerable<ProductInfo> GetProducts(string language) 
 
     { 
 
      using (IDataContext ctx = DataContext.Instance()) 
 
      { 
 
       string sqlCmd = ";WITH cte as (SELECT * FROM [ProductsLang] WHERE Culture = @0)" + 
 
           " SELECT Products.*,cte.ProductName, cte.ProductShortDesc, cte.TabId" + 
 
           " FROM [Products] as Products" + 
 
           " INNER JOIN cte ON Products.ProductId = cte.ProductId"; 
 

 
       string order = " ORDER BY Products.ProductId DESC"; 
 
       return ctx.ExecuteQuery<ProductInfo>(CommandType.Text, sqlCmd + order, language); 
 
      } 
 
     }

我想我的問題是在哪裏是在tabid通過從我查詢到的最佳方式DNN API?

回答

0

這應該使用NavigateURL方法關閉DotNetNuke.Common.Globals

var url = DotNetNuke.Common.Globals.NavigateURL(TabId); 

還有其他的方式來獲得在DNN的網址是非常簡單的,但是這是一個應該尊重所有不同供應商的最簡單的方法是可以用來建立一個URL

private string _productUrl = ''; 
public string ProductURL { get return DotnetNuke.Common.Globals.NavigateURL(TabId); } 
+0

所以我應該做我的模型和控制器外,並從前端調用這個? 我的模塊是一個角度spa模塊,所以我會創建一個webapi服務來返回這個? – nextoneup

+0

你可以把它放入屬性本身嗎?因此,調用「獲取」URL,使對象的人口中的API調用?添加了一些信息給答案,這是未經測試,雖然 –

+0

我認爲這也可以工作,但它回來爲空。 ' public class ProductLangInfo { public int? ProductsId {get;組; } public string ProductName {get;組; } public string ProductShortDesc {get;組; } public int TabId {get;組; } 私人字符串_productUrl; public string ProductURL { get { return DotNetNuke.Common.Globals.NavigateURL(TabId); } } }' – nextoneup