asp.net mvc 2 - C# MVC 2 HtmlHelper to generate Table Columns with Model Binding -
i'm after mvc2 custom htmlhelper allow me dynamically create x amount of columns given data.
say instance have zoo class contains list of animals (which contains sub class). ex:
public class zoo { public list<animals> myanimals; } public class animals { public string year; public warmclimate warm; public class warmclimate { public string hippo; public string zebra; public string elephant; etc... } }
and want create table similar following. creating column every list of animals have. 4 columns worth of data or 30.
| | 2011 | 2012 | 2013 | 2014 | | hypo | 6 | 1 | 7 | 0 | | zebra | 1 | 1 | 2 | 1 | | elephant | 1 | 1 | 3 | 0 |
i have this; quite basic. loop iterates on list grabbing defined property value. if there 100 animals in class, page 100 loops nightmare.
<tr> <td>zebras: </td> <% (int = 0; < model.myanimals.count; i++) { %> <td><%= html.editorfor(x => x.myanimals[i].warm.zebra) %></td> <% } %> </tr>
i replace custom htmlhelper allow me like:
<tr> <td>zebras: </td> <%= html.mycusthelper( property?? , list??, expression??) %> </tr>
mycusthelper return appropriate html name attribute populated correctly model binding, when use html.editorfor()
helper, ex:
<td><input name="myanimals[2].warm.zebra" id="myanimals_2__warm_zebra" type="text" value="1"></td> etc.... etc...
maybe i'm going wrong, assume there simple way output repeatable columns worth of data.
can out efficient way of doing this?
i don't see why need custom helper when editortemplate should want. still use editorfor, use template it.
basically, specify template name editorfor:
<tr> <td>zebras: </td> <%= html.editorfor(x => x.myanimals, "zebras") %> </tr>
i have long forgotten webforms syntax this, this. create editortemplates folder , in create file called zebras.ascx , add appropriate webforms @directives typed model.
<td><%= html.editorfor(x => x.warm.zebra) %></td>
editor templates automatically iterate on collection, don't need index, , automatically generates correct naming convention.
read 5 part series here:
http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html
unfortunately, stopped being able think in webforms code quite time ago, can't give real example.
Comments
Post a Comment