rendering - How to pass IEnumberable<Category> as Sitecore ViewRendering model -


suppose have model class in mvc called category (which has id , name fields)
there way can return ienumberable<catergory> view rendering model mvc view file?

you have few choices data mvc view in sitecore. alls of examples below community mvc project available review. can found here:

https://github.com/sitecore-community/sample-sitecore-mvc

view renderings

to trying do, having custom model in view rendering. need create model inherits irenderingmodel. using irenderingmodel requires have function called initialize. in initialize create logic need build ienumberable. if want details of category editable, need make sure return model fields htmlstring types.

i want note developers not use method because not testable.

   public class car : irenderingmodel    {         public htmlstring make { get; set; }         public htmlstring model { get; set; }          // rendering represents context rendering - particular model ever used view renderings         public sitecore.mvc.presentation.rendering rendering { get; set; }          // item represents rendering's datasource, , pageitem represents context page         // these properties exist on sitecore's own renderingmodel object         public item item { get; set; }         public item pageitem { get; set; }          public void initialize(sitecore.mvc.presentation.rendering rendering)         {             // use rendering object passed in sitecore set datasource item , context pageitem properties             rendering = rendering;             item = rendering.item;             pageitem = pagecontext.current.item;              // set property values using fieldrenderer ensure values editable in page editor             make = new htmlstring(fieldrenderer.render(item, "make"));             model = new htmlstring(fieldrenderer.render(item, "model"));         }     } 

then in /sitecore/layout/models create new model rendering. in type field specify model create above. in example mvc.data.models.car.

finally in view rendering, specify model class , use model data.

@model mvc.data.models.car  <!-- set 'background' parameter, go page editor > select 'design' mode, click on featured car component >      click more > click edit component properties > scroll down 'parameters' section -->  <div class="highlight" style="background-color: #@model.rendering.parameters["background"]">     <h3>this week's featured car</h3>         <p><strong>model:</strong> @model.model</p>     <p><strong>make:</strong> @model.make</p> </div> 

controller renderings

in cases when have custom data, recommend using controler rendering. clean, reusable , testable.

model

create traditional model rendering use.

namespace mvc.data.models {     /// <summary>     ///  light-weight model used example of how can isolate sitecore-dependent code repository,     ///  means models have no dependency on sitecore , more regular asp.net mvc models. see drivercontroller.cs     ///  usage.     /// </summary>     public class driver     {         public htmlstring name { get; set; }         public htmlstring text { get; set; }         public htmlstring image { get; set; }     } } 

view model

in example, author creates view model has driver model, plus information rendering datasource item.

public class driverviewmodel {     public driver driver { get; set; }      public string background { get; set; }      public item contextitem { get; set; } } 

controller

then create controller/repository fill model. passing rendering.

public actionresult featured() { var repository = _driverrepository;  var driver = repository.getdriver(); var driverviewmodel = repository.getdriverviewmodel(driver);  return view(driverviewmodel); } 

rendering

@model mvc.data.models.driverviewmodel  <!-- set 'background' parameter, go page editor > select 'design' mode, click on featured driver component >      click more > click edit component properties > scroll down 'parameters' section -->  <div class="highlight" style="background: #@model.background">     <h3>this week's featured driver</h3>     <p><strong>name:</strong> @model.driver.name</p>     <p><strong>description:</strong></p> @model.driver.text </div> 

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -