簡體   English   中英

ASP.NET煩人的URL編碼字符串

[英]ASP.NET annoying URL encoding strings

我有這個小功能:

// 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);
}

然后繼續創建以下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>

這是url編碼&nbsp; &amp;nbsp; 這會破壞渲染的選擇框的格式。 任何想法如何防止這種情況發生? 我需要選項中的初步空格。

試試以下:

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

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

編輯:是具有UTF-8 U + 00A0值的字符(例如,它呈現為空格,但不被任何IsSpace方法變體視為空格)

據我所知,你必須迭代DropDownList的Items集合,並在每個選項的Text屬性上調用HttpUtility.HttpDecode。 我不相信有辦法阻止文本值的HTTP編碼。

順便說一句,你知道OPTGROUP標簽嗎? 不幸的是它不能嵌套(但)它可能涵蓋你的一些情況:

http://htmlhelp.com/reference/html40/forms/optgroup.html

-Oisin

我會用css格式化間距...基本上你不需要文本,你只想在視覺上格式化選項...

由於某種原因,該文本被雙重HTMLEncoded。

試試這個:

// 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(menuVal.ToString(), menuTxt);
        parent.Items.Add(newItem);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM