2017-09-25 86 views
1

我想表明在html.dropdownlist與縮進項目 變化& NBSP在asp.net mvc的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"); 

代碼,你可以看到我添加& NBSP到下拉項replecate

但問題是& NBSP顯示在下拉列表中。

這是視圖>源結果:

<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

我想你需要閱讀這個:https://stackoverflow.com/questions/8239348/how-to-use-html-raw-in-mvc-razor-dropdownlist。每個'SelectListItem'選擇項目都很難使用'Html.Raw',所以嘗試使用基於CSS的樣式。 –

+0

這是一個動態的n級下拉列表,我如何根據它的級別設置每個項目的樣式?我的意思是,margin:10px;對於第一級,保證金:其他項目的10px *級別? – user3250818

+1

你不能使用'DropDownList()'做這個 - 方法建立它自己的'IEnumerable '並且結果被編碼。你可以做它用(說)連字符,否則你將需要手動生成HTML或者創建自定義'HtmlHelper'擴展方法 –

回答

0

您可以手動創建下拉列表假設你的地方您的收藏在一個視圖模型成員叫ParentIDs

觀:

@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> 
} 
+0

Locke125,之前我嘗試過類似的方法,但它沒有保留手動創建的dropdownlist的選定值,我會再試一次,如果有任何成功的話,會寫在這裏。 – user3250818

+0

我添加了一些代碼,可以幫助設置選定的狀態。儘管如此,你將不得不在模型中的某處。 –