2010-04-29 49 views
0

我想設置一個簡單的下拉列表,但我似乎不能將它綁定到模型。 我使用的是Asp.Net MVC和nhibernate。MVC下拉列表不綁定到模型

我的下拉列表中宣稱,像這樣:

<%= Html.DropDownListFor(model => model.Project, (IEnumerable<SelectListItem>)ViewData["Projects"], " -- Select -- ", new { name = "Project" })%> 

我成立了選擇列表,像這樣:

ViewData["Projects"] = new SelectList(projectRepository.GetAll(), "EntityGUID", "Name", editEntity.Project); 

這似乎綁定選擇列表下拉罰款,但的SelectedValue沒有設置。 它顯示爲默認---選擇---

而且當我保存這個數據,下拉列表不會綁定到模型,我必須手動設置對象,像這樣保存它:

entity.Project = projectRepository.GetById(new Guid(Request["Project"].ToString())); 

我相信我已經採取了正確的措施,讓這個項目直接綁定到我的模型上。 有什麼我在這裏失蹤?

非常感謝您的時間, 杆

回答

6

OMG我發現這個問題........

我花了3天的時間轉:

<%= Html.DropDownListFor(model => model.Aspect, (IEnumerable<SelectListItem>)ViewData["AspectTypes"])%> 

到:

<%= Html.DropDownListFor(model => model.Aspect.EntityGUID, (IEnumerable<SelectListItem>)ViewData["AspectTypes"])%> 

model.Aspect * * .EntityGUID ** 我必須將下拉列表綁定到對象guid,而不是對象本身。 Doh ....我感到痛苦,很多工作要跟上。

謝謝你的時間。

+0

與此相關的問題是,它只會綁定ID屬性而不是文本,對吧? – im1dermike 2014-09-11 14:35:21

0

這只是一種預感,因爲你的代碼對我來說很好,但我不認爲你需要定義你的SelectList時包括第四參數。設置該字段可能會破壞事物的正常流動(覆蓋模型綁定),並且我從未綁定過DropDownList,並且設置了SelectList的。

嘗試刪除它,看看它是如何發生的。

SelectList(projectRepository.GetAll(), "EntityGUID", "Name"); 

而且I asked a question回關於如何實現MVC2,你可能會發現有用DropDownList一段時間。

+0

感謝Kelsey, 我會看看這篇文章。 SelectedValue參數只是我最後一次嘗試。總的來說,我沒有使用它。 我只是將它設置爲嘗試在編輯窗體中預選值。 我認爲這可能是我的nhibernate映射中的問題,而不是設置子對象。 我會往下看那條路線。 – 2010-04-30 04:41:23

+0

當我不在nhibernate映射中將延遲加載設置爲false時,出現此錯誤。 正在初始化[AgileThought.ERP.Domain.Property.Project#8260fd30-97e7-46f4-818a-689f1e65a91c] - 無法初始化代理 - 沒有會話。 – 2010-04-30 04:54:47

+0

而當我嘗試編輯它時,我收到以下模型驗證錯誤。 值'fd38c877-706f-431d-b624-1269184eeeb5'無效。 這表明它試圖將我的GUID推入對象。 拔出我的頭髮... – 2010-04-30 04:57:01