2014-12-11 4 views
0

Мне нужно заполнить выпадающее меню некоторыми данными, которые я получаю с SOAP-сервера. Сервер предоставляет мне множество компаний.Заполнение DropDown с использованием массива

Как использовать его для заполнения DD?

Вот мой класс User:

public class Usuario 
{ 
    public string Nome { get; set; } 
    public string Token { get; set; } 
    public IEnumerable<SelectListItem> Unidades { get; set; } 
} 

Вот где я получить компании и отправить его к виду, я получить его от другого Action, который перенаправляет к этому Action:

var usuario = TempData["objUsuario"] as UsuarioSSO; 

if (usuario == null) return RedirectToAction("Index", "Login"); 

if (usuario.UsuarioUnidades == null) 
{ 
    ModelState.AddModelError("", "Usuário não possui unidades"); 

    return View(); 
} 

var model = new Models.Usuario 
{ 
    Unidades = usuario.UsuarioUnidades.ToList().Select(x => new SelectListItem 
    { 
     Value = x.CodigoEmitente.ToString(), 
     Text = x.NomeFantasia 
    }) 
}; 

return View(model); 

Вот как я пытаюсь его отобразить:

@Html.DropDownListFor(x => x.Unidades, new SelectList(Model.Unidades)) 

Я уже попробовал все, но это не будет работать, я получаю некоторые ошибки преобразования и когда я могу заставить его работать не будет отображать содержимое, он будет отображать только объект внутри Text области

System.Web.Mvc.SelectListItem 
+2

Я не могу разобраться, что «не будет работать» из вашего описания, но главная проблема, которую я вижу, если у вас есть not ogt свойство вашей модели для выбранного значения. После этого синтаксис будет '@ Html.DropDownListFor (x => x.SelectedUnidadeId, новый SelectList (Model.Unidades))' –

ответ

4

Вы должны иметь одно свойство для выбранного элемента и список доступных элементов, например:

public class Usuario 
{ 
    public string Nome { get; set; } 
    public string Token { get; set; } 
    public string Unidade { get; set; } 
    public IEnumerable<SelectListItem> Unidades { get; set; } 
} 

, а затем создать раскрывающийся как:

@Html.DropDownListFor(x => x.Unidade, Model.Unidades) 

Вы можете адр поставьте Unidades, как это уже есть IEnumerable<SelectListItem>.

P.S .: Я догадался единственного числа Unidades, поскольку я не говорю о вашем langauge, что бы это ни было. Я рекомендую ВСЕГДА использовать английский язык в исходном коде.

+0

Спасибо, приятель, работал как шарм! Извините за язык и, кстати, угадал. Только один вопрос, этот DD находится внутри формы, которая будет отправлена ​​в мое действие, но я получаю недопустимое модельное состояние – Terkhos

+0

. Какую ошибку вы получаете точно (обновите свой вопрос)? – ChrFin

4

Для вашей модели требуется свойство типа значения для привязки выбранного параметра. Если CodigoEmitente является TypeOf int то модель недвижимости должна быть

public int SelectedUnidades { get; set; } 

и вам необходимо назначить SelectList к другому свойству в модели представления или к ViewBag собственности

ViewBag.UnidadesList = new SelectList(usuario.UsuarioUnidades, "CodigoEmitente", "NomeFantasia"); 

Тогда в представлении

@Html.DropDownListFor(x => x.SelectedUnidades, (SelectList)ViewBag.UnidadesList) 
+0

Спасибо, приятель! – Terkhos

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