Cascade DropDownList

时间:2014-05-27 19:56:05

标签: c# asp.net-mvc

我有一个级联的DropDownList,但在第二个下拉列表中,当我将数据发布到控制器时,我的动作接收的对象中的valeu属性为null,我不知道为什么。

我的控制器。

[HttpPost]
public JsonResult ListaEstados(String id)
{
    var estados = Util.getEstados(id); 
    return Json(estados);
}

[HttpPost]
public ActionResult AddCidade(Cidade c)
{
    c.Cadastrar(c);
    return RedirectToAction("AddCidade");
}

我的观点

 @model Projeto_P1.Models.Cidade
@{
    ViewBag.Title = "Cadastro de Cidades";
}

@using (Html.BeginForm("AddCidade", "Geral", FormMethod.Post))
{
    <div class="container">
        <fieldset>
            <div>
                @Html.Label("Cidade")
                @Html.EditorFor(model => model.Nome)
            </div>
            <div>
                @Html.Label("País")
                @Html.DropDownList("Pais", (SelectList)ViewData["paises"], "Selecione", new { id = "PaisID"})
            </div>
            <div>
                @Html.Label("Estado")
                @Html.DropDownListFor(model => model.Estado, Enumerable.Empty<SelectListItem>(), "Selecione")
            </div>

            <br />

            <input type="submit" value="Cadastrar" />
        </fieldset>
    </div>
}

<script type="text/javascript">
    $(document).ready(function () {
        $("#PaisID").change(function () {
            $.ajax({
                url: "ListaEstados",
                type: 'POST',
                data: { ID: $(this).val() },
                datatype: 'json',
                success: function (data) {
                    var elements = "";
                    $.each(data, function () {
                        elements = elements + '<option values="' + this.ID + '">' + this.Nome + '</option>'
                    })
                    $('#Estado').empty().attr('disabled', false).append(elements);
                }
            });
        });
    });
</script>

1 个答案:

答案 0 :(得分:0)

我解决了我的问题,ajax代码中有一个S,我还没看到它:elements = elements + '<option values="' + this.ID..。 我接受它并且它起作用了。