none
Validação remota com DropDownList RRS feed

  • Pergunta

  • Galera to com o seguinte problema: tenho um dropdownlist com os nomes dos cargos existentes e nesses cargos, há uma quantidade disponível. Com isso, caso a pessoa selecione um cargo que não esteja mais disponível, ele retorne a mensagem no @Html.ValidationMessageFor. Até o momento meu código está assim:

    CLASSE CARGO

    public class Cargo
    {
            public int Id { get; set; }
            public string Nome { get; set; }
            public int Quantidade { get; set; }
    }

    CLASSE USUÁRIO

    public class Usuario
    {
            public int Id { get; set; }
            [Required()]
            public string Nome { get; set; }
            [Remote("VerificarQuantidade", "Usuario")]
            public int IdCargo { get; set; }

            public virtual Cargo cargo { get; set; }
    }


    MÉTODO DA VALIDAÇÃO REMOTA (ESTÁ NO CONTROLLER HOME)

    public JsonResult VerificarQuantidade(int id)
            {
                var cargo = db.Cargoes.Find(id);
                if (cargo.Quantidade > 0)
                {
                    return Json(true, JsonRequestBehavior.AllowGet);
                }
                return Json("Vagas já preenchidas para o cargo selecionado!", JsonRequestBehavior.AllowGet);
            }

    VIEW DE CADASTRO DO USUÁRIO

    @model Atividade22_05.Models.Usuario
    
    @{
        ViewBag.Title = "Create";
    }
    
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        <div class="form-horizontal">
            @Html.ValidationSummary(true)
            <div class="form-group">
                <label class="col-md-3 control-label" for="Nome">NOME</label>
                <div class="col-md-7">
                    @Html.EditorFor(model => model.Nome,)
                    @Html.ValidationMessageFor(model => model.Nome)
                </div>
            </div>
    
    <div class="form-group">
                <label class="col-md-3 control-label" for="IdCargo">CARGO</label>
                <div class="col-md-6">
                    @Html.DropDownList("IdCargo", (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class = "form-control", @required = "" })
                    @Html.ValidationMessageFor(model => model.IdCargo)
                </div>
            </div>
    
            <div class="form-group">
                <div class="col-md-offset-5 col-md-5">
                    <input type="submit" value="Cadastrar" id="Enviar" class="btn btn-primary" />
                    <button type="reset" name="limpar" id="Limpar" class="btn btn-danger">  Limpar  </button>
                </div>
            </div>
        </div>
    }


    sexta-feira, 23 de maio de 2014 14:43

Respostas

  • Achei a solução, era preciso colocar isso no view:

    @Html.DropDownListFor(model => model.IdCargo, new SelectList((System.Collections.IEnumerable)ViewBag.Cargos, "Value", "Text"))

    domingo, 1 de junho de 2014 15:14