更改为asp.net mvc html.dropdownlist中的& nbsp

时间:2017-09-25 09:29:18

标签: asp.net-mvc indentation html.dropdownlistfor

我想在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");

正如您所看到的,我在“重新分组”中添加&amp; nbsp到下拉项目

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

这是视图&gt;来源结果:

 <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>

任何想法?

修改

通过改变这样的观点来解决问题: 我在检查帖子作为答案后尝试了这个

   <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>

1 个答案:

答案 0 :(得分:0)

您可以手动创建下拉列表,假设您将集合放在名为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>
}