下拉列表不像预期的那样运行
本文关键字:运行 下拉列表 | 更新日期: 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 );
}