在 asp.net mvc html.dropdownlist 中更改 &nbsp

  changes to &nbsp in asp.net mvc html.dropdownlist

我想在 html.dropdownlist

中显示带有缩进的项目

这是控制器中的代码

IEnumerable<ViewModels.testvm> test = db.Database.SqlQuery<ViewModels.testvm>(@"WITH tree (id, parentid, level, title, rn) as 
(
   some code
)
***********SELECT id,REPLICATE('&nbsp;',level) + title as title
FROM tree
order by RN");
ViewBag.ParentID = new SelectList(test, "ID", "Title");

如你所见,我将   添加到 replecate

的下拉项中

但问题是   显示在下拉列表中。

这是视图 > 源结果:

 <select class="form-control" id="ParentID" name="ParentID"><option 

value="10">Menu1</option>
<option value="11">&amp;nbsp;Sub1</option>
<option value="14">&amp;nbsp;Submenu1</option>
<option value="12">Menu2</option>
<option value="16">&amp;nbsp;sub2</option>
<option value="13">Menu3</option>
<option value="15">&amp;nbsp;sub3</option>
<option value="17">&amp;nbsp;&amp;nbsp;sub sub</option>
<option value="22">&amp;nbsp;&amp;nbsp;&amp;nbsp;sub3 sub sub</option>
<option value="19">menu4</option>
<option value="20">&amp;nbsp;sub4</option>
<option value="21">menu5</option>
</select>

如您所见,&nbsp; 已转换为 &amp;nbsp;

我试过 "\xA0" 而不是 &nbsp 但它也显示在下拉列表中!

我认为html.raw可以解决这个问题,但我不知道如何与html.dropdownlist一起使用。

这是视图

<div class="col-md-10">

@Html.DropDownList( "ParentID", null, htmlAttributes: new { @class = "form-
control" })

</div>

有什么想法吗?


编辑

通过像这样更改视图,问题解决了: 我在检查了 post 作为答案后尝试了这个

   <select class="form-control" id="ParentID" name="ParentID">
        <option value="0">First Level</option>
        @foreach (var item in ViewBag.ParentID)
        {
            <option value="@item.Value">@Html.Raw(@item.Text)</option>
        }
    </select>

假设您将集合放在名为 ParentIDs:

的 ViewModel 成员中,您可以手动创建下拉列表

观点:

@if (Model.ParentIDs.Any())
{
    <select class="form-control" id="ParentID" name="ParentID">
        @foreach (var item in Model.ParentIDs)
        {
            if (Model.ParentID == item.id)
            {
                 <option value="@item.id" selected>@item.title</option>
            }
            else
            {
                 <option value="@item.id">@item.title</option>
            }
        }
    </select>
}