Usuário com melhor resposta
Dropdownlist carregar tipado

Pergunta
-
Estou fazendo e ocorre erro dizendo que não aceita valor nulo.
A estrutura é a seguinte:
View partial tipada
@model Models.TpNegocio @Html.DropDownListFor(model => model.codigo, new SelectList((ViewBag.TipoNegocio) as SelectList, "codigo", "descricao"), "Select")
View Index
@Html.Partial("~/Views/Dropdown/ddlTpNegocio.cshtml");
Controller
public ActionResult Index() { ViewBag.TipoNegocio = new Models.TpNegocio().Listar().ToList(); return View(); }
Detalhe a consulta funciona, popula direitinho o ViewBag, o erro ocorre ao carregar a View Partial.
Na verdade, eu acho que o que esta faltando é popular o Html.Partial antes de rederinzar.
- Editado CEFL quinta-feira, 19 de junho de 2014 18:47
Respostas
-
Opa, beleza brother? vamos lá, usando Ajax e jQuery!
Vou postar um exemplo onde existe um DropDownList Regiao e conforme a região que escolho, eu listo numa outra DropDownList os bairros daquela região...
Passo 1 - Método no Controller
[HttpPost] public JsonResult RetornarBairros(int idRegiao) { var bairrosReturn = repositoryBairro.Bairros.Where(x => x.IdRegiao == idRegiao).ToList(); List<SelectListItem> lista = new List<SelectListItem>(); foreach (var item in bairrosReturn) { SelectListItem listItem = new SelectListItem(); listItem.Text = item.NomeBairro.ToString(); listItem.Value = item.IdBairro.ToString(); lista.Add(listItem); } return Json((IEnumerable)lista); }
Passo 2 - Código jQuey - Ajax
$(document).ready(function () { function obterBairros() { var elements = ""; if ($('#IdRegiao').val() == "0") { elements = elements + '<option value="">Bairros...</option>' $('#IdBairro').empty().attr('disabled', true).append(elements);; } else { $.ajax({ url: "/Empresa/RetornarBairros", type: 'POST', data: { idRegiao: $('#IdRegiao').val() }, datatype: 'json', success: function (data) { $.each(data, function () { elements = elements + '<option value="' + this.Value + '">' + this.Text + '</option>' }) $('#IdBairro').empty().attr('disabled', false).append(elements); } }); } } $("#IdRegiao").change(function () { obterBairros();//Conforme mudo a Regiao, listo os bairros via Ajax }); });
Passo 3 - Código da View
<div class="form-group"> @Html.LabelFor(model => model.IdBairro, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.DropDownList("IdBairro", Enumerable.Empty<SelectListItem>(), "Bairros...", new { @disabled = "disabled", @class = "form-control" }) </div> </div>
Qualquer coisa, dá um toque, abraço!!!
- Marcado como Resposta CEFL terça-feira, 24 de junho de 2014 12:04
Todas as Respostas
-
Olá...consegue fazer dessa forma??
1 - Código no Controller.
var cursos = cursoRepository.Cursos.OrderBy(c => c.DescricaoCurso).ToList(); cursos.Insert(0, new Curso { IdCurso = 0, DescricaoCurso = "Selecionar Todos" }); ViewBag.Cursos = cursos;
2 - Código na View
<div class="editor-label"> Curso </div> <div class="editor-field"> @Html.DropDownListFor(c => c.IdCurso, new SelectList(ViewBag.Cursos, "IdCurso", "DescricaoCurso")) @Html.ValidationMessageFor(c => c.IdCurso) </div>
Se não rolar, dá um toque, abraço!
-
-
Opa, beleza brother? vamos lá, usando Ajax e jQuery!
Vou postar um exemplo onde existe um DropDownList Regiao e conforme a região que escolho, eu listo numa outra DropDownList os bairros daquela região...
Passo 1 - Método no Controller
[HttpPost] public JsonResult RetornarBairros(int idRegiao) { var bairrosReturn = repositoryBairro.Bairros.Where(x => x.IdRegiao == idRegiao).ToList(); List<SelectListItem> lista = new List<SelectListItem>(); foreach (var item in bairrosReturn) { SelectListItem listItem = new SelectListItem(); listItem.Text = item.NomeBairro.ToString(); listItem.Value = item.IdBairro.ToString(); lista.Add(listItem); } return Json((IEnumerable)lista); }
Passo 2 - Código jQuey - Ajax
$(document).ready(function () { function obterBairros() { var elements = ""; if ($('#IdRegiao').val() == "0") { elements = elements + '<option value="">Bairros...</option>' $('#IdBairro').empty().attr('disabled', true).append(elements);; } else { $.ajax({ url: "/Empresa/RetornarBairros", type: 'POST', data: { idRegiao: $('#IdRegiao').val() }, datatype: 'json', success: function (data) { $.each(data, function () { elements = elements + '<option value="' + this.Value + '">' + this.Text + '</option>' }) $('#IdBairro').empty().attr('disabled', false).append(elements); } }); } } $("#IdRegiao").change(function () { obterBairros();//Conforme mudo a Regiao, listo os bairros via Ajax }); });
Passo 3 - Código da View
<div class="form-group"> @Html.LabelFor(model => model.IdBairro, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.DropDownList("IdBairro", Enumerable.Empty<SelectListItem>(), "Bairros...", new { @disabled = "disabled", @class = "form-control" }) </div> </div>
Qualquer coisa, dá um toque, abraço!!!
- Marcado como Resposta CEFL terça-feira, 24 de junho de 2014 12:04