C# 带钥匙问题的MVC下拉列表

C# 带钥匙问题的MVC下拉列表,c#,asp.net-mvc,C#,Asp.net Mvc,只需要另一双眼睛。错误是: The ViewData item that has the key 'BrandId' is of type 'System.Int32' but must be of type IEnumerable<SelectListItem>. 控制器 model.BrandForDropDown = Repository.GetBrandsForDropDown(); 我还尝试了列表以及模型和视图等,同样的错误您的代码有一个问题。创建selectlist

只需要另一双眼睛。错误是:

The ViewData item that has the key 'BrandId' is of type 'System.Int32'
but must be of type IEnumerable<SelectListItem>.
控制器

model.BrandForDropDown = Repository.GetBrandsForDropDown();


我还尝试了
列表
以及模型和视图等,同样的错误

您的代码有一个问题。创建selectlist时,需要指定dataValueField和dataTextField。因此,要么在服务器方法中这样做,要么在视图中使用它时这样做

这就是你在你的方法中所做的

select new SelectListItem
                      {
                        Value = brand.BrandID.ToString(),
                        Text = brand.BrandName
                      }).OrderBy(x => x.Text),"Value","Text");
另一个选项是简单地将属性类型更改为
List
,并更新方法以返回该类型

public int BrandId { get; set; }
public List<SelectListItem> BrandForDropDown { get; set; }
public int BrandId{get;set;}
公共列表BrandForDropDown{get;set;}
如果条件失败,请确保返回相同的类型

public List<SelectListItem>GetBrandsForDropDown()
{
  if(Membership.GetUser() != null)
  {
    // your existing code
                 select new SelectListItem
                 {
                       Value = brand.BrandID.ToString(),
                       Text = brand.BrandName
                 }).OrderBy(x => x.Text));
  } 
  return new List<SelectListItem();
}
public ListGetBrandsForDropDown()
{
if(Membership.GetUser()!=null)
{
//您现有的代码
选择新的SelectListItem
{
Value=brand.BrandID.ToString(),
Text=brand.BrandName
}).OrderBy(x=>x.Text));
} 

return new List您的代码有一个问题。创建selectlist时,您需要指定dataValueField和dataTextField。因此,您必须在服务器方法中或在视图中使用它时在中执行此操作

这就是你在你的方法中所做的

select new SelectListItem
                      {
                        Value = brand.BrandID.ToString(),
                        Text = brand.BrandName
                      }).OrderBy(x => x.Text),"Value","Text");
另一个选项是简单地将属性类型更改为
List
,并更新方法以返回该类型

public int BrandId { get; set; }
public List<SelectListItem> BrandForDropDown { get; set; }
public int BrandId{get;set;}
公共列表BrandForDropDown{get;set;}
如果条件失败,请确保返回相同的类型

public List<SelectListItem>GetBrandsForDropDown()
{
  if(Membership.GetUser() != null)
  {
    // your existing code
                 select new SelectListItem
                 {
                       Value = brand.BrandID.ToString(),
                       Text = brand.BrandName
                 }).OrderBy(x => x.Text));
  } 
  return new List<SelectListItem();
}
public ListGetBrandsForDropDown()
{
if(Membership.GetUser()!=null)
{
//您现有的代码
选择新的SelectListItem
{
Value=brand.BrandID.ToString(),
Text=brand.BrandName
}).OrderBy(x=>x.Text));
} 

返回新列表请遵循我的技巧

控制器

ViewBag.BrandForDropDown = Repository.GetBrandsForDropDown();
HTML

@Html.DropDownListFor(x => x.BrandId, ViewBag.BrandForDropDown as   
List<SelectListItem>, "- Brand -")
@Html.DropDownListFor(x=>x.BrandId,ViewBag.BrandForDropDown作为
列表“-品牌-”)

谢谢。

请遵循我的技巧

控制器

ViewBag.BrandForDropDown = Repository.GetBrandsForDropDown();
HTML

@Html.DropDownListFor(x => x.BrandId, ViewBag.BrandForDropDown as   
List<SelectListItem>, "- Brand -")
@Html.DropDownListFor(x=>x.BrandId,ViewBag.BrandForDropDown作为
列表“-品牌-”)

谢谢。

发回后返回相同视图时是否出现此错误?@Izzy否这是初始视图加载如果您的
SelectList
没有data@Izzy你在空的btw上是对的…很高兴我能帮上忙!有时这可能是一个非常误导人的错误。在发回你要返回的地方后,这个错误是什么是否正在查看相同的视图?@Izzy否这是初始视图加载如果您的
SelectList
没有data@Izzy你在空的btw上是对的…很高兴我能帮助你!这有时会是一个非常误导的错误