2013-05-28 4 views
0

Я пытаюсь изменить код в существующем проекте, чтобы сделать DropDownListДля выбора элемента. Я прочитал бесчисленные потоки, но я не получаю определенный элемент для выбора;DropDownListДля использования ViewData

Это то, что я получил;

Контроллер;

ViewData("MyDropDownList") = new SelectList(_myRepository.GetData, "data_id", "name"}) 

View;

@Html.DropDownListFor(Function(m) m.data_id, TryCast(ViewData("MyDropDownList"), SelectList)) 

И это создает приятный список, который выглядит примерно так:

<select id="someId" name="someName" data-val="true"> 
<option value="aec385a7-bd77-4b94-9fbb-130487e3e62e">Option1</option> 
<option value="5edee514-e6ca-456f-a8fa-71bde67351a1">Option2</option> 
<option value="8a293328-8b11-47b7-bc9a-ceddf2e6a355">Option3</option> 
</select> 

После прослушивания я был уверен, что это сработает для выбора «Option2»;

ViewData("MyDropDownList") = new SelectList(_myRepository.GetData, "data_id", "name", "5edee514-e6ca-456f-a8fa-71bde67351a1"}) 

Но это не так, я также пробовал это;

ViewData("MyDropDownList") = new SelectList(_myRepository.GetData, "data_id", "name", New With {Key .id = "5edee514-e6ca-456f-a8fa-71bde67351a1"} }) 

Что я делаю неправильно? VB - это не моя чашка чая, так что это может быть просто синтаксический винт. Любой вход оценивается.

ответ

0

В MVC, если представление строго типизировано, выбранный параметр выбранного списка будет переопределен, и выбранное свойство свойства, установленное в конструкторе, никогда не достигнет представления, а первый вариант в выпадающем списке будет выбран (почему все еще немного тайны). Чтобы преодолеть эту проблему, все, что нужно сделать, - это переименовать DropDownList в представлении, а также имя ключа ViewData в контроллере к чему-то другому, кроме имени, заданного в модели, и выбранный параметр затем достигнет представления. К сожалению, при отправке формы вам нужно будет получить доступ к выбранному параметру из FormCollection, а не к строго типизированному объекту, который немного раздражает.

http://www.dotnetguy.co.uk/post/2009/06/25/net-mvc-selectlists-selected-value-does-not-get-set-in-the-view/

+0

Hi! И спасибо за ответ. Я попытался переименовать MyDropDownList в TADAAAA как в представлении, так и в контроллере. Я делаю это правильно? – Tim

+0

, пожалуйста, измените свой код на следующий новый SelectList (_myRepository.GetData, "data_id", "name", new {data_id = 5edee514-e6ca-456f-a8fa-71bde67351a1}); –

+0

Ах, кажется логичным, теперь вы должны написать это в VB? – Tim

Смежные вопросы