C# MVC-无法从';int';至';system.web.ui.WebControl.listitem
您好,我正在尝试对从多选下拉框中选择客户ID的客户进行归档;我的控制器出现上述错误C# MVC-无法从';int';至';system.web.ui.WebControl.listitem,c#,asp.net,linq,model-view-controller,drop-down-menu,C#,Asp.net,Linq,Model View Controller,Drop Down Menu,您好,我正在尝试对从多选下拉框中选择客户ID的客户进行归档;我的控制器出现上述错误 public ActionResult Create(CountryViewModel country) { List<SelectListItem> selectedItems = country.MenuCountry.Where(p => country.ContryIds.Contains(int.Parse(p.Value))).ToList();
public ActionResult Create(CountryViewModel country)
{
List<SelectListItem> selectedItems = country.MenuCountry.Where(p => country.ContryIds.Contains(int.Parse(p.Value))).ToList();
try
{
CustomerClient CC = new CustomerClient();
var result = CC.findAll();
var matches = from customer in result
where selectedItems.Contains(customer.Id) // Here is error and saying cannot convert from 'int' to 'system.web.ui.webcontrols.listitem
select customer;
// ViewBag.listCustomers = CC.findAll();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
请告知;非常感谢请试试这个
var matches = from customer in result
where selecteList.Exists(a=>a.Value== customer.Id.ToString()) select customer;
假设您的CountryViewModel如下所示
public class CountryViewModel
{
public List<SelectListItem> MenuCountry{ get; set; }
public string[] ContryIds { get; set; }
}
由于Country
属性是string
类型,我们需要确保下拉列表的选项值也是string(国家(名称)?)。因此,可能在使用下拉菜单渲染视图的GET操作中
var countryOptions = new List<SelectListItem> {
new SelectListItem { Value="USA", Text="USA"},
new SelectListItem { Value="Canada", Text="Cananda" }
};
// to do : pass countryOptions to the view to render the dropdown
var countryOptions=新列表{
新建SelectListItem{Value=“USA”,Text=“USA”},
新建SelectListItem{Value=“Canada”,Text=“Cananda”}
};
//要执行的操作:将countryOptions传递到视图以呈现下拉列表
selectedItems
的类型必须是List
(或int[]
,等等))selectedItems.Any(s=>s.value==ccustomer.Id.ToString())@MarkC。在asp.net mvc中,我们有一个类SelectListItem。我认为用户正在使用它创建下拉列表。它有一个文本和值属性,都是stringHi My countryViewMovel类型,类似下面的公共类CountryViewModel{public List menucontry{get;set;}public int[]ContryIds{get;set;}}@user3624511请尝试我的答案,告诉我这是否是您想要的;以前解决了,但又坏了;列表selectedItems=country.MenuCountry.Where(p=>country.ContryId.Contains(int.Parse(p.Value)))中出现错误。ToList();------声明值不能为空。参数名称:source似乎country.MenuCountry有一个空值。我不能告诉你更多,因为我没有数据,它与你对值进行配对时有关。试试这个:-List selectedItems=country.menucontry.Where(p=>!string.IsNullOrEmpty(p.value)和&country.ContryIds.Contains(int.Parse(p.value))。ToList()@user3624511,我想我解决了你原来的问题。因此,如果你有其他错误,最好问一个新问题。如果解决了您在问题中提到的问题,请标记此项。@user3624511如果Yashvier希望继续帮助您-这取决于他们。但是,如果他们不愿意,请停止要求进一步讨论的延长讨论。非常感谢。
public ActionResult Create(CountryViewModel country)
{
var CC = new CustomerClient();
var result = CC.findAll(); // assuming this return a collection of Customer
var matches = result.Where(x=>country.CountryIds.Contains(x.Country);
// to do : return something
}
var countryOptions = new List<SelectListItem> {
new SelectListItem { Value="USA", Text="USA"},
new SelectListItem { Value="Canada", Text="Cananda" }
};
// to do : pass countryOptions to the view to render the dropdown