Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET annoying URL encoding strings

Tags:

c#

asp.net

I have this small function:

// Adds to menu
public void addMenuToList(int menuVal, string menuTxt, int depth, bool hasChildren)
{
    for (int i = 0; i < depth; i++)
    {
        menuTxt = "&nbsp;" + menuTxt;
    }
    if (hasChildren) { menuTxt = " + " + menuTxt; }

    ListItem newItem = new ListItem();
    newItem.Text = menuTxt;
    newItem.Value = menuVal.ToString();
    parent.Items.Add(newItem);
}

Which then goes on to create the following HTML:

<select size="4" name="ctl00$mainContent$parent" id="ctl00_mainContent_parent" class="tbox widebox">
    <option selected="selected" value="0">Top Level</option>
    <option value="1"> + Boxes</option>
    <option value="2">&amp;nbsp;&amp;nbsp;Wrapping</option>    
    <option value="8"> + &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;All Products</option>
</select>

It's url encoding the &nbsp; to &amp;nbsp; which spoils the formatting of the rendered select box. Any ideas how to prevent this happening? I need preliminary spaces in the options.

like image 986
Tom Gullen Avatar asked Feb 26 '23 09:02

Tom Gullen


1 Answers

Try following:

string space = Server.HtmlDecode("&nbsp;");

for (int i = 0; i < depth; i++)
{
    menuTxt = space + menuTxt;
}

EDIT: nbsp is character with UTF-8 U+00A0 value (eg. it renders as a space, but isn't considered as a space by any of IsSpace method variants)

like image 144
nothrow Avatar answered Mar 07 '23 22:03

nothrow