【问题标题】:Cascade Dropdown NET CORE级联下拉网络核心
【发布时间】:2021-08-31 06:11:13
【问题描述】:

我有点头疼,因为我不知道问题出在哪里。我有以下控制器:

public JsonResult GetActivitySubType(int typeId)
{
    var data = (from a in _db.ActivitySubTypes
                where a.ActivityTypeId == typeId
                select new
                {
                    a.ActivitySubTypeId, a.ActivitySubTypeName
                    }
            ).ToList();
    return Json(data);
}

public IActionResult Index()
{
    ViewData["ActivityTypeId"] = new SelectList(_db.ActivityTypes.OrderBy(o => o.ActivityTypeName), "ActivityTypeId", "ActivityTypeCode");
    return View();
}

然后在我看来。我有以下代码:

<select asp-for="ActivityTypeId" asp-items="ViewBag.ActivityTypeId"><option value="">Select</option></select>
<select id="ActivitySubTypeId" asp-for="ActivitySubTypeId"></select>

<script type="text/javascript">
    $(document).ready(function () {
        $("#ActivityTypeId").change(function () {
            $.get("GetActivitySubType", { typeId: $("#ActivityTypeId").val() }, function (data) {
                $("#ActivitySubTypeId").empty();
                $.each(data, function (index, row) {
                    $("#ActivitySubTypeId").append("<option value='" + row.ActivitySubTypeId + "'>" + row.ActivitySubTypeName + "</option>")
                });
            });
        })
    });
</script>

当我选择ActivityType 时,它会在我选择的ActivitySubType 上加载undefined。我错过了什么吗?

非常感谢。

【问题讨论】:

    标签: jquery asp.net-core .net-core cascade


    【解决方案1】:

    asp.net core 中响应的命名约定是camel case 而不是pascal case

    如下改变:

    $("#ActivitySubTypeId").append("<option value='" + row.activitySubTypeId + "'>" + row.activitySubTypeName + "</option>")
    

    【讨论】:

    • 天哪!老实说,你拯救了我的一天。非常感谢。太感谢了。对了,有文章解释吗?
    • 好像没有这样的解释。这是设计使然。但它有一个关于如何关闭骆驼案的答案:stackoverflow.com/questions/38728200/…
    • 好的,非常感谢。干杯,
    猜你喜欢
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多