Каскадное выделение в ASP.NET Core - PullRequest
0 голосов
/ 02 июля 2019

Я хочу реализовать каскадный выбор между странами и городами, где оба наследуют от абстрактного класса GeographicBoundary, реализуя функцию Table Per Hierarchy (TPH) ядра EF Core. Для этого я использую ASP.NET Core 2.x, EF Core Code-first. Но я не смог реализовать.

Я пытался использовать Json, возвращенный из действия контроллера в JQuery / Ajax, но безуспешно.

// СУПЕР КЛАСС

public abstract class GeographicBoundary  {
    public int GeographicBoundaryId { get; set; }

    public string Name { get; set; }
}

// СТРАНА

public class Country : GeographicBoundary
    {

    }

// ГОРОД

public class City : GeographicBoundary
{

    public Country Country { get; set; }
}

// КОД В ВИДЕ

            @*COUNTRY*@
            <div class="row" style="margin-bottom: 0px;">
                <div class="input-field col s12 m6 offset-m3">
                    <select asp-for="CountryId" asp-items=@ViewBag.Countries>
                    </select>
                    <label>B1 - País</label>
                    <span asp-validation-for="CountryId" class="text-danger"></span>
                </div>
            </div>

            @*CITIES*@
            <div class="row" style="margin-bottom: 0px;">
                <div class="input-field col s12 m6 offset-m3">
                    <select asp-for="ProvinceId" asp-items="@(new SelectList("", "GeographicBoundaryId", "Name"))"></select>
                    <label>B2 - Cidades</label>
                    <span asp-validation-for="CityId" class="text-danger"></span>
                </div>
            </div>

// ViewModel Fileds

public int CityId

public int CountryId

// МОЙ КОНТРОЛЛЕР

public JsonResult GetProvinces(int countryId)
{
    var provinces = _geographicBoundaryManager.GetProvincesByCountryId(countryId).ToList();

    provinces.Insert(0, new Province { GeographicBoundaryId = 0, Name = "SELEECIONAR" });

    return Json(provinces);
}

// JS код

@section ScriptPage
    {
<script src="/lib/jquery/dist/jquery.js"></script>
<script>$("#GeographicBoundaryId").change(function () {
        $.get("/Home/GetProvinces", { GeographicBoundaryId: $("#GeographicBoundaryId").val() }, function (data) {
            $("GeographicBoundaryId").empty();
            $.each(data, function (i, row) {
    < !--$("#GeographicBoundaryId").append("<option value='" + data[i].districtId + "'>" + data[i].name + "</option>")-->
                    $("#GeographicBoundaryId").append("<option value='" + row.geographicboundaryId + "'>" + row.name + "</option>")
            });
        });
    })</script>

}

Только страны Dropbox работает. Дропбокс городов исчезнет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...