2016-11-23 8 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; } 
 
    }

これは私が私のクエリからのtabidに渡すための最良の方法がどこにあるか私の質問があると思います私のコントローラ

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); 
 
      } 
 
     }

ですDNN API?

答えて

0

これはオフDNN内のURLを取得するための他の方法があります

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

DotNetNuke.Common.Globals

NavigateURLメソッドを使用して、非常に簡単でなければなりませんが、それはすべてのさまざまなプロバイダーを尊重しなければならない最も簡単な方法でありますURLを作成するために使用することができます

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

私はモデルとコントローラの外でこれをフロントエンドから呼び出す必要がありますか? 私のモジュールは角張ったスパモジュールなので、これを返すためにwebapiサービスを作成しますか? – nextoneup

+0

あなたはそれをプロパティ自体に入れることができますか?だから、URLを取得する呼び出しは、オブジェクトの母集団でそのAPI呼び出しを行いますか?答えにいくつかの情報を追加しましたが、それはテストされていませんでしたが、 –

+0

私はそれもうまくいくと思っていましたが、それはnullとして戻ってきます。 ' public class ProductLangInfo { public int? ProductsId {get;セット; } 公開ストリングProductName {get;セット; } 公開ストリングProductShortDesc {get;セット; } public int TabId {get;セット; } プライベート文字列_productUrl; パブリックストリングProductURL {得る {リターンDotNetNuke.Common.Globals.NavigateURL(TabId)。 } } } – nextoneup

関連する問題