下拉列表不像预期的那样运行

本文关键字:运行 下拉列表 | 更新日期: 2023-09-27 18:14:45

我的DropDownListFors遇到了麻烦,我希望你能帮助我。我猜这是一件你要么知道要么不知道的事情。

问题是我在我的数据库中有一个国家表,其中有一个国家列表。我想从我的下拉菜单的行为是在我的地址表中创建一个外键引用,指向下拉菜单中选择的国家。我得到的行为是,我的地址表中的外键指向国家的一个新条目,这是完全不需要的。

谁能解释一下怎么做?我不确定你们想看什么代码,所以如果你能帮忙,请告诉我。

===更多信息===

好的,我有一个这样的视图模型类:

public class CountryViewModel
{
    public int CountryId { get; set; }
    public string Name { get; set; }
}

在我的视图中,我有一个像这样的下拉列表:

@Html.DropDownListFor(m => m.LegalEntity.Address.Country.CountryId,
    new SelectList( Model.LegalEntity.Address.Country, 
        "CountryId", "Name", Model.LegalEntity.Address.Country.CountryId),
new { @class = "form-control" })              

请注意,第二行目前不起作用:我不知道如何将整个国家列表放入其中。

我的法人实体视图模型是这样的:

public class LegalEntityViewModel
{
    [Key]
    public int LegalEntityID { get; set; }
    public virtual AddressViewModel Address { get; set; }
    public virtual TechnicalContactViewModel TechnicalContact { get; set; }
}

地址视图模型是这样的

public class AddressViewModel
{
    [Key]
    public int AddressID { get; set; }
    ...
    [Display(Name = "Country")]
    public virtual CountryViewModel Country { get; set; }
}

我想要的行为是让所有国家填充下拉列表,并以LegalEntityViewModel.AddressViewModel.CountryViewModel结尾。

帮助!我一整天都在摆弄和重构这些东西!

期待您的回复。

下拉列表不像预期的那样运行

有多种方法可以做到这一点。例如,你可以在AddressViewModel中加载国家列表。

public class AddressViewModel
{
    [Display(Name = "Country")]
    public int SelectedCountryId { get; set; }
    public IEnumerable<SelectListItem> Countries { get; set; }
}

然后在视图中执行

@Html.DropDownListFor(m => m.SelectedCountryId , new SelectList(Model.Countries , "Value", "Text"))

你也可以用Javascript加载国家列表。

$(document).ready(function () {
    $.ajax({
        type: 'POST',
        url: '@Url.Action("GetCountries")',  <--This will be a method in your controller that brings back the Countries,
        success: function (results) {
        var options = $('#SelectedCountryId');
        $.each(results, function () {
            options.append($('<option />').val(this.CountryId).text(this.CountryName));
        });
    }
    });
  public class CountryViewModel
  { 
       public int CountryId {get;set;}
       public int CountryName {get;set;
  }

在控制器

    [HttpPost]
    public JsonResult GetCountries()
    {
        var countries = //some method to get the countries for a database or something
        var countriesList = countries .Select(x => new CountryViewModel { CountryId  = x.CountryId, CountryName = x.CountryName }).ToList();
        return this.Json(countriesList );
    }