Загрузка данных на страницу по мере выбора пользователем вариантов asp net core C#

Проект asp net core 3.1, Entity framework core 3. Проект с представлениями mvc.

Есть 3 сущности - Friend, City, Street:

[Table("friend")]
    public partial class Friend
    {
        [Key]
        [Column("Id_Friend")]
        public long IdFriend { get; set; }
        [Column("Name_", TypeName = "varchar(256)")]
        public string Name { get; set; }
        [Column("City_id")]
        public int? CityId { get; set; }
        [Column("Street_id")]
        public int? StreetId { get; set; }
        [Column("User_id")]
        public long? UserId { get; set; }

        [ForeignKey(nameof(CityId))]
        [InverseProperty("Friends")]
        public virtual City City { get; set; }
        [ForeignKey(nameof(StreetId))]
        [InverseProperty("Friends")]
        public virtual Street Street { get; set; }
        [ForeignKey(nameof(UserId))]
        [InverseProperty("Friends")]
        public virtual User User { get; set; }
    }


[Table("city")]
    public partial class City
    {
        public City()
        {
            Friends = new HashSet<Friend>();
            Streets = new HashSet<Street>();
        }

        [Key]
        [Column("Id_City")]
        public int IdCity { get; set; }
        [Column(TypeName = "varchar(256)")]
        public string Name { get; set; }

        [InverseProperty("City")]
        public virtual ICollection<Friend> Friends { get; set; }
        [InverseProperty("City")]
        public virtual ICollection<Street> Streets { get; set; }
    }


[Table("street")]
    public partial class Street
    {
        public Street()
        {
            Friends = new HashSet<Friend>();
            Houses = new HashSet<House>();
        }

        [Key]
        [Column("Id_Street")]
        public int IdStreet { get; set; }
        [Column(TypeName = "varchar(256)")]
        public string Name { get; set; }
        [Column("City_id")]
        public int? CityId { get; set; }

        [ForeignKey(nameof(CityId))]
        [InverseProperty("Streets")]
        public virtual City City { get; set; }
        [InverseProperty("Street")]
        public virtual ICollection<Friend> Friends { get; set; }
        [InverseProperty("Street")]
        public virtual ICollection<House> Houses { get; set; }
    }

По плану пользователь добавляет друга (Friend) и вводит данные о нем - имя, город, улицу, номер дома.

Как можно сделать так, чтобы на странице представления при выборе пользователем города в поле с улицей подгружался список улиц, относящихся к данному городу - из коллекции ICollection Streets объекта сущности Friends, а не весь список улиц?

Страница представления:

<h4>Friend</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Edit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <input type="hidden" asp-for="IdFriend" />
            <div class="form-group">
                <label asp-for="Name" class="control-label"></label>
                <input asp-for="Name" class="form-control" />
                <span asp-validation-for="Name" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="CityId" class="control-label"></label>
                <select asp-for="CityId" class="form-control" asp-items="ViewBag.CityId"></select>
                <span asp-validation-for="CityId" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="StreetId" class="control-label"></label>
                <select asp-for="StreetId" class="form-control" asp-items="ViewBag.StreetId"></select>
                <span asp-validation-for="StreetId" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="HouseId" class="control-label"></label>
                <select asp-for="HouseId" class="form-control" asp-items="ViewBag.HouseId"></select>
                <span asp-validation-for="HouseId" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="UserId" class="control-label"></label>
                <select asp-for="UserId" class="form-control" asp-items="ViewBag.UserId"></select>
                <span asp-validation-for="UserId" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Save" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

Ответы (0 шт):