c# - Custom HtmlHelper for a dropdownlist shows all the values as plain text instead of building a dropdownlist -


i have tried build custom dropdownlist using method here:

http://blog.platformular.com/2011/12/16/country-drop-down-html-helper-for-asp-net-mvc/

basically, helper loads html file, populates dropdownlist based on information found in file.

but rather building dropdownlist, app shows data in view way:

country: <select name="countrycode" id="countrycode"><option value="">please select</option><option value="af" >afghanistan</option><option value="al" >albania</option><option value="dz" >algeria</option><option value="as" >american samoa</option><option value="ad" >andorra</option><option value="ao" >angola</option><option value="ai" >anguilla</option><option value="aq" >antarctica</option><option value="ag" >antigua , barbuda</option><option value="ar" >argentina</option><option value="am" >armenia</option><option value="aw" >aruba</option><option value="au" >australia</option><option value="at" >austria</option><option value="az" >azerbaijan</option><option value="bs" >bahamas</option><option value="bh" >bahrain</option><option value="bd" >bangladesh</option><option value="bb" >barbados</option><option value="by" >belarus</option><option value="be" >belgium</option><option value="bz" >belize</option><option value="bj" >benin</option><option value="bm" >bermuda</option><option value="bt" >bhutan</option><option value="bo" >bolivia</option><option value="ba" >bosnia , herzegovina</option><option value="bw" >botswana</option><option value="bv" >bouvet island</option><option value="br" >brazil</option><option value="io" >british indian ocean territory</option><option value="bn" >brunei darussalam</option><option value="bg" >bulgaria</option><option value="bf" >burkina faso</option><option value="bi" >burundi</option><option value="kh" >cambodia</option><option value="cm" >cameroon</option><option value="ca" >canada</option><option value="cv" >cape verde</option><option value="ky" >cayman islands</option><option value="cf" >central african republic</option><option value="td" >chad</option><option value="cl" >chile</option><option value="cn" >china</option><option value="cx" >christmas island</option><option value="cc" >cocos (keeling) islands</option><option value="co" >colombia</option><option value="km" >comoros</option><option value="cg" >congo</option><option value="ck" >cook islands</option><option value="cr" >costa rica</option><option value="ci" >cote d'ivoire</option><option value="hr" >croatia (local name: hrvatska)</option><option value="cu" >cuba</option><option value="cy" >cyprus</option><option value="cz" >czech republic</option><option value="dk" >denmark</option><option value="dj" >djibouti</option><option value="dm" >dominica</option><option value="do" >dominican republic</option><option value="ec" >ecuador</option><option value="eg" >egypt</option><option value="sv" >el salvador</option><option value="gq" >equatorial guinea</option><option value="er" >eritrea</option><option value="ee" >estonia</option><option value="et" >ethiopia</option><option value="fk" >falkland islands (malvinas)</option><option value="fo" >faroe islands</option><option value="fj" >fiji</option><option value="fi" >finland</option><option value="fr" >france</option><option value="fx" >france, metropolitan</option><option value="gf" >french guiana</option><option value="pf" >french polynesia</option><option value="tf" >french southern territories</option><option value="ga" >gabon</option><option value="gm" >gambia</option><option value="ge" >georgia</option><option value="de" >germany</option><option value="gh" >ghana</option><option value="gi" >gibraltar</option><option value="gr" >greece</option><option value="gl" >greenland</option><option value="gd" >grenada</option><option value="gp" >guadeloupe</option><option value="gu" >guam</option><option value="gt" >guatemala</option><option value="gn" >guinea</option><option value="gw" >guinea-bissau</option><option value="gy" >guyana</option><option value="ht" >haiti</option><option value="hm" >heard island & mcdonald islands</option><option value="hn" >honduras</option><option value="hk" >hong kong</option><option value="hu" >hungary</option><option value="is" >iceland</option><option value="in" >india</option><option value="id" >indonesia</option><option value="ir" >iran, islamic republic of</option><option value="iq" >iraq</option><option value="ie" >ireland</option><option value="il" >israel</option><option value="it" >italy</option><option value="jm" >jamaica</option><option value="jp" >japan</option><option value="jo" >jordan</option><option value="kz" >kazakhstan</option><option value="ke" >kenya</option><option value="ki" >kiribati</option><option value="kp" >korea, democratic people's republic of</option><option value="kr" >korea, republic of</option><option value="kw" >kuwait</option><option value="kg" >kyrgyzstan</option><option value="la" >lao people's democratic republic</option><option value="lv" >latvia</option><option value="lb" >lebanon</option><option value="ls" >lesotho</option><option value="lr" >liberia</option><option value="ly" >libyan arab jamahiriya</option><option value="li" >liechtenstein</option><option value="lt" >lithuania</option><option value="lu" >luxembourg</option><option value="mo" >macau</option><option value="mk" >macedonia, former yugoslav republic of</option><option value="mg" >madagascar</option><option value="mw" >malawi</option><option value="my" >malaysia</option><option value="mv" >maldives</option><option value="ml" >mali</option><option value="mt" >malta</option><option value="mh" >marshall islands</option><option value="mq" >martinique</option><option value="mr" >mauritania</option><option value="mu" >mauritius</option><option value="yt" >mayotte</option><option value="mx" >mexico</option><option value="fm" >micronesia, federated states of</option><option value="md" >moldova, republic of</option><option value="mc" >monaco</option><option value="mn" >mongolia</option><option value="ms" >montserrat</option><option value="ma" >morocco</option><option value="mz" >mozambique</option><option value="mm" >myanmar</option><option value="na" >namibia</option><option value="nr" >nauru</option><option value="np" >nepal</option><option value="nl" >netherlands</option><option value="an" >netherlands antilles</option><option value="nc" >new caledonia</option><option value="nz" >new zealand</option><option value="ni" >nicaragua</option><option value="ne" >niger</option><option value="ng" >nigeria</option><option value="nu" >niue</option><option value="nf" >norfolk island</option><option value="mp" >northern mariana islands</option><option value="no" >norway</option><option value="om" >oman</option><option value="pk" >pakistan</option><option value="pw" >palau</option><option value="pa" >panama</option><option value="pg" >papua new guinea</option><option value="py" >paraguay</option><option value="pe" >peru</option><option value="ph" >philippines</option><option value="pn" >pitcairn</option><option value="pl" >poland</option><option value="pt" >portugal</option><option value="pr" >puerto rico</option><option value="qa" >qatar</option><option value="re" >reunion</option><option value="ro" >romania</option><option value="ru" >russian federation</option><option value="rw" >rwanda</option><option value="sh" >saint helena</option><option value="kn" >saint kitts , nevis</option><option value="lc" >saint lucia</option><option value="pm" >saint pierre , miquelon</option><option value="vc" >saint vincent , grenadines</option><option value="ws" >samoa</option><option value="sm" >san marino</option><option value="st" >sao tome , principe</option><option value="sa" >saudi arabia</option><option value="sn" >senegal</option><option value="sc" >seychelles</option><option value="sl" >sierra leone</option><option value="sg" >singapore</option><option value="sk" >slovakia (slovak republic)</option><option value="si" >slovenia</option><option value="sb" >solomon islands</option><option value="so" >somalia</option><option value="za" >south africa</option><option value="es" >spain</option><option value="lk" >sri lanka</option><option value="sd" >sudan</option><option value="sr" >suriname</option><option value="sj" >svalbard , jan mayen islands</option><option value="sz" >swaziland</option><option value="se" >sweden</option><option value="ch" >switzerland</option><option value="sy" >syrian arab republic</option><option value="tw" >taiwan</option><option value="tj" >tajikistan</option><option value="tz" >tanzania, united republic of</option><option value="th" >thailand</option><option value="tg" >togo</option><option value="tk" >tokelau</option><option value="to" >tonga</option><option value="tt" >trinidad , tobago</option><option value="tn" >tunisia</option><option value="tr" >turkey</option><option value="tm" >turkmenistan</option><option value="tc" >turks , caicos islands</option><option value="tv" >tuvalu</option><option value="ug" >uganda</option><option value="ua" >ukraine</option><option value="ae" >united arab emirates</option><option value="gb" >united kingdom</option><option value="us" >united states</option><option value="um" >united states minor outlying islands</option><option value="uy" >uruguay</option><option value="uz" >uzbekistan</option><option value="vu" >vanuatu</option><option value="va" >vatican city state (holy see)</option><option value="ve" >venezuela</option><option value="vn" >viet nam</option><option value="vg" >virgin islands (british)</option><option value="vi" >virgin islands (u.s.)</option><option value="wf" >wallis , futuna islands</option><option value="eh" >western sahara</option><option value="ye" >yemen</option><option value="yu" >yugoslavia</option><option value="zr" >zaire</option><option value="zm" >zambia</option><option value="zw" >zimbabwe</option></select> 

here's htmlhelper method have coded right now:

public static class extensionmethods {     public static string countrydropdown(this system.web.mvc.htmlhelper helper, string name, string optionlabel, object selectedvalue)     {         xmldocument doc = new xmldocument();         doc.load(httpcontext.current.server.mappath("~/app_data/countries.xml"));          stringbuilder b = new stringbuilder();          b.append(string.format("<select name=\"{0}\" id=\"{0}\">", name));         if (!string.isnullorempty(optionlabel))         {             b.append(string.format("<option value=\"\">{0}</option>", optionlabel));         }          foreach (xmlnode node in doc.selectnodes("//country"))         {            string selected = string.empty;            if (node.attributes["code"].value == selectedvalue string)            {                selected = "selected=\"selected\"";            }            b.append(string.format("<option value=\"{0}\" {2}>{1}</option>", node.attributes["code"].value, node.innertext, selected));         }         b.append("</select>");          return b.tostring();     } } 

and have added namespaces web.config:

<namespaces>     <add namespace="system.web.helpers" />     <add namespace="system.web.mvc" />     <add namespace="system.web.mvc.ajax" />     <add namespace="system.web.mvc.html" />     <add namespace="system.web.optimization" />     <add namespace="system.web.routing" />     <add namespace="system.web.webpages" />     <add namespace="myapp.htmlhelpers"/> </namespaces> 

only <add namespace="myapp.htmlhelpers"/>line added though because had rest.

can me? i've never done custom html helper before , puzzles me.

edit

here's how render view htmlhelper:

@using myapp.htmlhelpers  @{     viewbag.title = "object index"; }  <h2>object index</h2>  <p>     @html.actionlink("create new", "create")     @using (html.beginform())     {         <p>             (...)             country: @html.countrydropdown("countrycode","---select country---", viewdata["countrycode"])             (...)         </p>     } </p> 

ah it's because returning plain text, should return mvchtmlstring

public static mvchtmlstringcountrydropdown(     system.web.mvc.htmlhelper helper,      string name,      string optionlabel,      object selectedvalue) {     // code goes here     return mvchtmlstring.create(b.tostring()); } 

Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -