asp.net mvc - How do I call a partial view that expects a IEnumerable collection in a view that gets a model object? -


i trying build version of wordpress in mvc4. working on page view. i've decided in view should include menu of other pages have been created. method showpage view:

    public actionresult showpage(string mytitle)     {              var query = in db.pages                         a.title == mytitle                         select a;              pagemodels item = new pagemodels();             item = query.firstordefault<pagemodels>();             if (item != null)             {                 return view(item);             }             else             {                 item.content = "no page title :" + mytitle + " found.";                 return view(item);             }      } 

this method partial trying render:

    public actionresult list()     {         return view(db.pages.tolist());     } 

this how view looks like:

@model dynamic_web_pages.models.pagemodels @{     viewbag.title = "page preview"; }  @html.partial("_listpartial", new ienumerable<dynamic_web_pages.models.pagemodels>) <div class="content">@html.raw(model.content)</div> 

finally partial:

@model ienumerable<dynamic_web_pages.models.pagemodels>  <div class="dropdown"> @foreach (var page in model) {     if(page.parent == 0)     {         <div class="btn-group">             <a class="btn dropdown-toggle" id="@html.displayfor(modelitem => page.id)" role="button" data-toggle="dropdown" data-target="#" href="/@html.displayfor(modelitem => page.title)" >@html.displayfor(modelitem => page.title)                 <b class="caret"></b>             </a>              <ul class="dropdown-menu" role="menu" aria-labelledby="@html.displayfor(modelitem => page.id)">             @foreach (var child in model)             {                        if (child.parent == page.id)                 {                     <li><a class="child" href="/@html.displayfor(modelitem => child.title)" >@html.displayfor(modelitem => child.title)</a></li>                 }                 }                </ul>             </div>     } } </div> 

i following error in view:

cannot create instance of abstract class or interface 'system.collections.generic.ienumerable<dynamic_web_pages.models.pagemodels>' 

what should second argument of @html.partial be?

your view accepted single instance of pagemodels

@model dynamic_web_pages.models.pagemodels @{     viewbag.title = "page preview"; } 

and yet passing in partial accepts ienumerable , got exception.

now based on our conversation in comments, can load partial using jquery:

<script> $("#navmenu").load('@url.action("list")'); </script> 

where replace code:

@html.partial("_listpartial", new ienumerable<dynamic_web_pages.models.pagemodels>) // <div id="navmenu"></div> 

Comments