Не обновляется список объектов шаблона представления после GET-запроса к контроллеру в asp net core

Проект 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>();
        }

        [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; }
    }

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

При этом при выборе города список улиц должен обновляться в соответствии с выбранным городом - должны отобразиться улицы из коллекции ICollection Streets объекта сущности City.

Для этого был добавлен дополнительный метод "GetStreets" в контроллер:

    public class FriendsController : Controller
    {
        private readonly VoterCollectorContext _context;

        public FriendsController(VoterCollectorContext context)
        {
            _context = context;
        }
        
        // GET: Friends/Create
        [HttpGet]
        public IActionResult Create()
        {
            int selectedIndexCity = 1;
            ViewData["CityId"] = new SelectList(_context.City, "IdCity", "Name", selectedIndexCity);
            ViewData["DistrictId"] = new SelectList(_context.District, "IdDistrict", "Name");
            ViewData["FieldActivityId"] = new SelectList(_context.Fieldactivity, "IdFieldActivity", "Name");
            ViewData["GroupUId"] = new SelectList(_context.Groupu, "IdGroup", "Name");
            ViewData["HouseId"] = new SelectList(_context.House, "IdHouse", "Name");
            ViewData["MicroDistrictId"] = new SelectList(_context.Microdistrict, "IdMicroDistrict", "Name");
            ViewData["PollingStationId"] = new SelectList(_context.PollingStation, "IdPollingStation", "Name");
            //ViewData["StreetId"] = new SelectList(_context.Street.Where(s => s.CityId==1), "IdStreet", "Name");
            SelectList streets = new SelectList(_context.Street.Where(s => s.CityId == 1), "IdStreet", "Name");
            ViewBag.Streets = streets;
            ViewData["UserId"] = new SelectList(_context.User, "IdUser", "FamilyName");
            return View();
        }

        [HttpGet]
        public IActionResult GetStreets(int? id)
        {
            SelectList streets = new SelectList(_context.Street.Where(s => s.CityId == id).ToList());
            return PartialView(streets);
        }

        // POST: Friends/Create
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("IdFriend,FamilyName,Name,PatronymicName,DateBirth,CityId,DistrictId,StreetId,MicroDistrictId,HouseId,Building,Apartment,Telephone,PollingStationId,Organization,FieldActivityId,PhoneNumberResponsible,DateRegistrationSite,VotingDate,Voter,Adress,Qrcode,Description,UserId,GroupUId")] Friend friend)
        {
            List<Friend> searchFriend = _context.Friend.Where(frnd => frnd.Name.Equals(friend.Name) && frnd.FamilyName.Equals(friend.FamilyName) && frnd.PatronymicName.Equals(friend.PatronymicName) && frnd.DateBirth.Value.Date == friend.DateBirth.Value.Date).ToList();

            if (searchFriend.Count == 0)
            {

                if (ModelState.IsValid)
                {
                    User userSave = _context.User.Where(u => u.UserName.Equals(User.Identity.Name)).FirstOrDefault();
                    friend.UserId = userSave.IdUser;
                    //friend.GroupUId = userSave.Groupsusers.First().GroupUId;

                    _context.Add(friend);
                    await _context.SaveChangesAsync();
                    return RedirectToAction(nameof(Index));
                }
                ViewData["CityId"] = new SelectList(_context.City, "IdCity", "IdCity", friend.CityId);
                ViewData["DistrictId"] = new SelectList(_context.District, "IdDistrict", "IdDistrict", friend.DistrictId);
                ViewData["FieldActivityId"] = new SelectList(_context.Fieldactivity, "IdFieldActivity", "IdFieldActivity", friend.FieldActivityId);
                ViewData["GroupUId"] = new SelectList(_context.Groupu, "IdGroup", "IdGroup", friend.GroupUId);
                ViewData["HouseId"] = new SelectList(_context.House, "IdHouse", "IdHouse", friend.HouseId);
                ViewData["MicroDistrictId"] = new SelectList(_context.Microdistrict, "IdMicroDistrict", "IdMicroDistrict", friend.MicroDistrictId);
                ViewData["PollingStationId"] = new SelectList(_context.PollingStation, "IdPollingStation", "IdPollingStation", friend.PollingStationId);
                ViewData["StreetId"] = new SelectList(_context.Street, "IdStreet", "IdStreet", friend.StreetId);
                ViewData["UserId"] = new SelectList(_context.User, "IdUser", "Password", friend.UserId);
                return View(friend);
            }
            else return Content("Данный пользователь уже был внесен в списки ранее!");
        }
}

Было создано частичное представления для улиц (Streets.cshtml):

@model IEnumerable<voteCollector.Models.Street>

<select id="street" name="Street">
    @foreach (var item in Model)
    {
        <option value="@item.IdStreet">@item.Name</option>
    }
</select>

Данное представление "ViewBag.Streets" было присвоено на основном представлении объекту:

<div class="form-group">
            <label asp-for="StreetId" class="control-label"></label>
            <select id="StreetId" asp-for="StreetId" class="form-control" asp-items="ViewBag.Streets"></select>
        </div>

Для передаче id выбранного города на сервер для обновления списка написал js-функцию c запросом ajax:

@section Scripts {

    <script>
$(function () {
            $("#CityId").change(function () {
                var id = $('#CityId').val();
                $.ajax({
                    type: 'GET',
                    url: '@Url.Action("GetStreets")/' + id,                  
                    success: function (data) {
                        $('#StreetId').replaceWith(data);
                    },
                    error: function (result, status, er) {
                        alert("error: " + result + " status: " + status + " er:" + er);
                    }
                });
            });
        });
    </script>
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}

JS-функция срабатывает, контроллер отрабатывает и формирует новый список, но на страницу он не возвращается. Выдает ошибку сервера:

jquery.min.js:2 GET http://localhost:18246/Friends/GetStreets/3 500 (Internal Server Error) send @ jquery.min.js:2 ajax @ jquery.min.js:2 (anonymous) @ Create:257 dispatch @ jquery.min.js:2 v.handle @ jquery.min.js:2 ListPicker._handleMouseUp @ unknown Error

Скрин среды разработки в момент возврата списка из контроллера Кто знает подскажите, где неверно сделал?

На фронт, судя по данным отладчика браузера, с сервера ничего не приходит введите сюда описание изображения

После правки получил следующий Responce:

System.InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'Microsoft.AspNetCore.Mvc.Rendering.SelectList', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable1[voteCollector.Models.Street]'. at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.EnsureCompatible(Object value) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary..ctor(ViewDataDictionary source, Object model, Type declaredModelType) at lambda_method(Closure , ViewDataDictionary ) at Microsoft.AspNetCore.Mvc.Razor.RazorPagePropertyActivator.CreateViewDataDictionary(ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorPagePropertyActivator.Activate(Object page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorPageActivator.Activate(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable1 statusCode) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable1 statusCode) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, String contentType, Nullable1 statusCode) at Microsoft.AspNetCore.Mvc.ViewFeatures.PartialViewResultExecutor.ExecuteAsync(ActionContext context, PartialViewResult result) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

HEADERS ======= Accept: / Accept-Encoding: gzip, deflate, br Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7 Connection:


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