我遇到了一个奇怪的问题。我有一个从控制器填充的表格中的国家/地区下拉列表。
public ActionResult Add(Guid id)
{
try
{
GeneralEntities generalEntities = new GeneralEntities();
List<SelectListItem> Country = new List<SelectListItem>();
AddAddressViewModel casModel = AddAddressViewModel.GetCompanyId(id, db);
List<Countries> Acountry = generalEntities.Countries.ToList();
Acountry.ForEach(x =>
{
Country.Add(new SelectListItem { Text = x.CountryName, Value = x.CountryId.ToString() });
});
casModel.Countries = Country;
return View(casModel);
}
catch (Exception)
{
return View();
}
}
选择添加视图以向帐户添加地址。我创建了一个新帐户,然后去添加一个地址,它给了我国家列表的错误。我在控制器和模型中设置断点并获得国家/地区列表。但是视图错误地认为列表为空。
当我在现有帐户上选择此选项时,没有问题,它会出现。这已经工作了很长时间。我不确定发生了什么变化。
添加帐户只会在数据库中添加一条记录,其中包含名称,当然还有 Id 和 UID,我使用的是确实存在的 UID。国家表与帐户无关。添加视图只显示国家、州、城市的列表。除了国家之外,相互依赖的人口是独立的。如果我注释掉视图中国家/地区的下拉菜单,页面将加载。
关于它为什么这样做的任何想法? 任何帮助将不胜感激。
更新:
我发现了我的问题或导致问题的原因。我仍然对为什么它会导致独立列表无法填充感到困惑。我的 ViewModel 在列出地址的 SQLView 表上有一个连接。我假设由于此表中没有与新帐户相关的地址,因此它出错了。为什么它在国家列表上出错,我不知道。下面是我指向的 ViewModel。
public class AddAddressViewModel
{
public static AddAddressViewModel GetCompanyId(Guid id, GeneralEntities db)
{
var qCust = from ad in db.Addresses
join adv in db.AddressView on ad.AddressId equals adv.AddressId
join cus in db.CompanyNames on ad.CompanyId equals cus.CompanyId
where (adv.CompanyUI == id)
select new AddAddressViewModel()
{
CompanyUI = adv.CompanyUI,
CompanyId = cus.CompanyId
};
var result = qCust.SingleOrDefault();
return result;
}
XXXX-- Enitities List --XXXX
}
我创建了另一个 ViewModel,现在指向:
public class AddAddressesViewModel
{
public static AddAddressesViewModel GetCompanyId(Guid id, GeneralEntities db)
{
var qCust = from ad in db.CompanyNames
join cus in db.CompanyNames on ad.CompanyUI equals cus.CompanyUI
where (cus.CompanyUI == id)
select new AddAddressesViewModel()
{
CompanyId = cus.CompanyId,
CompanyUI = cus.CompanyUI
};
var result = qCust.SingleOrDefault();
return result;
}
XXX-- Entities --XXX
}
这在地址中没有显示,但似乎有效。
如果有人能告诉我为什么这与单独的国家/地区列表有关,我将不胜感激。
我也不知道为什么这个 ViewModel 会连接到自己,我不是创建它的人。