Раскрывающийся список "Страна и город" в ASP. NET Core MVC с подходом db-first - PullRequest
0 голосов
/ 01 мая 2020

Я знаю, что этот вопрос можно было задавать столько раз, я много пытался найти ответ, и в конечном итоге я его здесь брошу, если кто-нибудь мне поможет.

Я делаю проект в ASP. NET Core MVC с подходом на основе базы данных. У меня есть регистрационная форма, в которой мне нужно заполнить раскрывающиеся списки "Страна и город", чтобы заполнить данные, поступающие через класс WeCareConext.

В моем контроллере я делаю это:

[HttpGet]
public IActionResult Register()
{
    CompanyEditViewModel model = new CompanyEditViewModel();

    var fromDatabaseEF = new SelectList(_context.Country.ToList(), "CountryId", "NameEn");
    ViewData["CompanyRegister"] = fromDatabaseEF;

    return View(model);
}

Моя Country модель:

public partial class Country
{
    public Country()
    {
        City = new HashSet<City>();
        Currency = new HashSet<Currency>();
        HolidayType = new HashSet<HolidayType>();
        Holidays = new HashSet<Holidays>();
        Province = new HashSet<Province>();
        StaffInfo = new HashSet<StaffInfo>();
    }

    public int CountryId { get; set; }
    public string NameAr { get; set; }
    public string NameEn { get; set; }
    public string NameFr { get; set; }
    public string IsoCode2 { get; set; }
    public string IsoCode3 { get; set; }
    public string RegionAr { get; set; }
    public string Region { get; set; }
    public byte? PostcodeRequired { get; set; }
    public bool? IsActive { get; set; }
    public byte? IsAvailable { get; set; }
    public string MobileMask { get; set; }
    public byte? IsDeleted { get; set; }
    public int? BaseCharges { get; set; }
    public int? MobileNumberLength { get; set; }
    public string CountryCode { get; set; }
    public byte[] IconImage { get; set; }
    public string PickerListAr { get; set; }
    public string PickerListEn { get; set; }
    public string PickerListFr { get; set; }

    public virtual ICollection<City> City { get; set; }
    public virtual ICollection<Currency> Currency { get; set; }
    public virtual ICollection<HolidayType> HolidayType { get; set; }
    public virtual ICollection<Holidays> Holidays { get; set; }
    public virtual ICollection<Province> Province { get; set; }
    public virtual ICollection<StaffInfo> StaffInfo { get; set; }
}

Моя CompanyEditViewModel класс:

public class CompanyEditViewModel
{
    [Display(Name = "Company Number")]
    public string CompanyId { get; set; }

    [Required]
    [Display(Name = "Company Name")]
    [StringLength(75)]
    public string Name { get; set; }

    [Required]
    [Display(Name = "Country")]
    public string CountryId { get; set; }
    public IEnumerable<SelectListItem> Countries { get; set; }

    [Required]
    [Display(Name = "City")]
    public string SelectedCityCode { get; set; }
    public IEnumerable<SelectListItem> Cities { get; set; }
}

К сожалению, это возвращает ошибку:

System.ArgumentException: 'Формат строки инициализации не соответствует спецификации, начинающейся с индекса 0.'

I пробую разные подходы но не решаю мою проблему. Может кто-нибудь предложить какой-нибудь код, который может мне помочь, и я также могу выбрать страну, а затем заполнить раскрывающийся список городов в соответствии с CountryID без перезагрузки страницы? Заранее спасибо.

...