MVC 5 从级联下拉列表中获取值

MVC 5 Get Values From Cascade Dropdowns

我是 MVC.NET 5 的新手; 我正在开发一个带有下拉菜单和表单的应用程序。我的下拉菜单是我的模型创建的,我无法弄清楚如何从下拉菜单中获取错误信息。 这是部分代码:

第一个下拉部分视图:

@using System.Data.SqlClient
@model Cars.Web.Models.TestModel

@using (Ajax.BeginForm("GetByMake", "Cars", null, new AjaxOptions
{
    HttpMethod = "POST",
    UpdateTargetId = "models",
    InsertionMode = InsertionMode.Replace
}, new { id = "selectMarke" }))
{
    @Html.DropDownListFor(
        m => m.SelectedMarkeId,
        new SelectList(Model.Markes, "Id", "Name"),
        String.Empty
        )
}

<script>
    $('#SelectedMarkeId').change(function () {
        console.log("asd");
        $('#selectMarke').submit();
    });
</script>

这是第二个:

@model  Cars.Web.Models.TestModel

@if (Model.Models != null && Model.Models.Any())
{
      @Html.DropDownList(
            "models",
            new SelectList(Model.Models, "Id", "ModelName"),
            string.Empty
            )
}

我可以从第一个 id 传递到第二个形成控制器,但我认为,这不是正确的方法。我想知道我是否添加更多表单,如何在提交时将它们与这两个下拉列表绑定。 谢谢

当您使用时:

@Html.DropDownListFor(
        m => m.SelectedMarkeId,
        new SelectList(Model.Markes, "Id", "Name"),
        String.Empty
        )

下拉列表的 name 将是 "SelectedMarkeId"。

当您使用时:

@Html.DropDownList(
            "models",
            new SelectList(Model.Models, "Id", "ModelName"),
            string.Empty
            )

下拉列表的 name 将是 "models"

控制器的参数必须与输入的 name 相匹配。像这样:

[HttpPost]
public ActionResult SomeAction (int models, int SelectedMarkeId)
{
    //SelectedMarkeId is the selected value of the first drop down list
    //models is the selected value of the second drop down list
    //your code here
}

您还可以使用包含与输入名称匹配的属性的对象。像这样:

public class TestModel
{
     public int models { get; set; }
     public int SelectedMarkeId { get; set; }
}

[HttpPost]
public ActionResult SomeAction (TestModel model)
{
    //SelectedMarkeId is the selected value of the first drop down list
    //models is the selected value of the second drop down list
    //your code here
}