Using Custom module API in MVC Widgets

Posted by Community Admin on 04-Aug-2018 12:38

Using Custom module API in MVC Widgets

All Replies

Posted by Community Admin on 16-Sep-2013 00:00

Hi,

I'm struggling trying to create an MVC widget based on a custom module built using the module builder.

private Type myType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.SomeModel.ModuleName.Type");
 
       public ActionResult Index()
       
           try
           
               DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
               IQueryable blah = dynamicModuleManager.GetDataItems(this.myType );
                
               return View("Default", blah);
           
           catch
           
               return View("Error");
           

On the View, I set:

@model IQueryable<SitefinityWebApp.Mvc.Models.MyModel>

It then displays the error:
Unable to cast object of type 'Telerik.Sitefinity.DynamicTypes.SomeModel.ModuleName.Type' to type 'SitefinityWebApp.Mvc.Models.MyModel'.

So I then changed it to :
@model IQueryable<Telerik.Sitefinity.DynamicTypes.SomeModel.ModuleName.Type>

And now I get the error:
CS0234: The type or namespace name 'SomeModel' does not exist in the namespace 'Telerik.Sitefinity.DynamicTypes.Model' (are you missing an assembly reference?)

Any ideas how I can get this module to work with an MVC widget? 

Thanks

Gary

Posted by Community Admin on 16-Sep-2013 00:00

Solved it!

In my controller:

private Type flightType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.LiveTest.Flight");
 
    public ActionResult Index()
    
        try
        
            DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
            var Test = GetDataItems();
            return View("Default", Test);
        
        catch
        
            return View("Error");
        
    
 
    public List<DynamicContent> GetDataItems()
    
        DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
 
        var Test = dynamicModuleManager.GetDataItems(this.flightType)
            .Where(i => i.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live && i.Visible == true).ToList();
 
        return Test;
    


And in my view:
@using Telerik.Sitefinity.Model
@model List<Telerik.Sitefinity.DynamicModules.Model.DynamicContent>
 
 
<table>
 @foreach (var test in Model)
     <tr><td>@Html.Raw(test.GetValue("testNo").ToString())</td></tr>
    
</table>

Posted by Community Admin on 05-Oct-2015 00:00

thanks for posting your solution. Helped me too!

This thread is closed