2014-03-04 24 views
0

我使用從數據庫檢索的數據填充DropdownList。我想添加默認的空字符串。我正在嘗試SelectedValue property沒有效果。我想已經nullstring.empty像下面樣向selectList添加空字符串作爲SelectedValue

ViewBag.Project = new SelectList(unitOfWork.projectRepository.Get(), "ProjectName", "ProjectName",string.Empty); 

DropDownList的聲明中查看

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

換算成:

<select class="form-control" id="Project" name="Project"> 
    <option value="Sample project">Sample project</option> 
    <option value="Second project">Second project</option> 
</select> 

通過有與無的String.Empty選項。

我應該在我的代碼更改

由於@Alexander建議我用ToList轉換它,現在這是我的代碼:

var items = unitOfWork.projectRepository.Get(); 
items=items.ToList<Project>().Insert(0, new Project { ProjectId = 1, ProjectName = "" }); 
ViewBag.Project = new SelectList(items, "ProjectName", "ProjectName",string.Empty); 

但這拋出異常:Error Cannot implicitly convert type 'void' to 'System.Collections.Generic.IEnumerable<magazyn.Models.Project>

+2

的可能重複[MVC - 的SelectList的清除默認選中的值(http://stackoverflow.com/questions/3780614/mvc-clear-default-selected-value-of-selectlist) – Andrei

+1

在修正案中,將第二行代碼分成兩部分;你正試圖將Insert()的結果賦值給項 - Insert()不返回一個值(是void)。在與Get相同的行上執行ToList以更改聲明 – Dave

回答

3

SelectList包含沒有接受空默認選項的重載。你可以把它添加到您的項目手動採集:

var items = unitOfWork.projectRepository.Get(); 
items.Insert(0, new Item {ProjectId = null, ProjectName == "", }); 

ViewBag.Project = new SelectList(items, "ProjectName", "ProjectName",string.Empty); 

更新

關於額外的轉換例外:您試圖分配Insert功能的List的結果。使用此代碼:

var items = unitOfWork.projectRepository.Get().ToList(); 
items.Insert(0, new Project { ProjectId = 1, ProjectName = "" }); 
+0

處的項目類型看起來很有希望。現在我只需要找到如何將東西插入到我的IEnumerable項集合中 – szpic

+0

只需將其轉換爲ToList並調用Insert。 – alexmac

+0

試過並更新了問題 – szpic