2016-11-23 6 views
0

Использование базового DAL 2 для захвата данных из таблицы с табидом. Хотелось бы также получить URL-адрес вкладки через API DNN. Я мог бы присоединиться к таблице 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); 
 
      } 
 
     }

Я думаю, мой вопрос, где это лучший способ передать в табетический от моего запроса к DNN API?

ответ

0

Это должно быть довольно просто с помощью метода NavigateURL от DotNetNuke.Common.Globals

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

Там другие способы, чтобы получить URL-адреса в DNN, но это самый простой способ, который должен соблюдать все различные провайдеры, которые могут быть использованы для построения URL-адреса

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

Так что я должен делать это за пределами моей модели и контроллера и называть это с передней стороны? Мой модуль является угловым модулем спа, поэтому я бы создал веб-сервис, чтобы вернуть это? – nextoneup

+0

Не могли бы вы поместить его в собственность? Чтобы вызов «получить» URL-адрес, делает этот вызов API в совокупности объекта? Добавил некоторую информацию в ответ, это непроверено, хотя –

+0

Я думал, что это тоже сработает, но оно возвращается как null. ' public class ProductLangInfo { public int? ПродуктыId {get; задавать; } public string ProductName {get; задавать; } public string ProductShortDesc {get; задавать; } public int TabId {get; задавать; } приватная строка _productUrl; общественная строка ProductURL { получить { возвращение DotNetNuke.Common.Globals.NavigateURL (TabId); } } } ' – nextoneup