我是MVC概念的新手。我目前正在使用网络论坛技术。所以我正在做MVC项目,面对下面的问题。
我的模型类包含如下代码:
public class Dropdown
{
public List<string> drpid;
public List<string> drpname;
}
datacontext类是
public class DataContext
{
Dropdown drp = new Dropdown();
public Dropdown Bind_Dropdown()
{
drp.drpid =new List<string> { "1", "2" };
drp.drpname=new List<string>{"Mumbai","Bangalore"};
return drp;
}
}
控制器代码是
public ActionResult Index()
{
DataContext dt=new DataContext();
var res = dt.Bind_Dropdown();
return View("Index",res);
}
最后强类型视图模态类下拉
@model MvcApplication1.Models.Class.Dropdown
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<p>
@Html.DropDownListFor(Model => Model.drpname, null); @*Error here*@
@Html.ActionLink("Edit", "Edit", new { /* id=Model.PrimaryKey */ }) |
</p>
</body>
此处无法绑定模态类的下拉值。获取错误&#39;没有类型&#39; IEnumerable&#39;如上所示,其中包含密钥&#39; drpname&#39; 下拉属性是
drpid as Data Value字段
drpname作为数据文本字段
那么如何解决它。
答案 0 :(得分:0)
进行此更改
有一个模型类
public class Model1
{
public string drpid {get; set;}
public string drpname {get; set;}
}
public class Dropdown
{
public IEnumerable<SelectListItem> models { get; set; }
}
在DataContext中填充
public class DataContext
{
public List<Model1> Bind_Dropdown()
{
List<Model1> modellist = new List<Model1> { new Model1 {drpid="1", drpname= "Mumbai"},
new Model1 {drpid="2", drpname= "Bangalore"}};
return modellist;
}
}
行动方法
public ActionResult Index()
{
DataContext dt=new DataContext();
var res = dt.Bind_Dropdown();
Dropdown drp = new Dropdown();
drp.models = res.modellist.Select(m => new SelectListItem {Value = m.drpid, Text = m.drpname}).ToList();
return View("Index",drp);
}
在视图中
@Html.DropDownListFor(model => model.models.Model1.drpid, Model.models)
答案 1 :(得分:0)
使用SelectLists,您可能最好创建一个城市列表作为一个类,并迭代这些。您可以将SelectListItems添加到SelectList。这可能不是让您的项目绑定的最佳方式,但我使用您的代码执行此操作:
模型(将SelectList添加为第三个属性):
public class Dropdown
{
public List<string> drpid;
public List<string> drpname;
public SelectList items;
}
控制器:
public ActionResult Index()
{
DataContext dt = new DataContext();
Dropdown res = dt.Bind_Dropdown();
IList <SelectListItem> selectList = new List<SelectListItem>();
for (int i = 0; i < res.drpname.Count; i++)
{
var selectListItem = new SelectListItem
{
Value = res.drpid[i],
Text = res.drpname[i]
};
selectList.Add(selectListItem);
}
res.items = new SelectList(selectList, "Value", "Text");
return View("Index", res);
}
然后将视图中的DropDownFor帮助器更改为:
@Html.DropDownListFor(Model => Model.drpid, Model.items, "")
这会显示您的下拉列表,您可以选择。但同样,这是一个快速解决方案,并且有更好的解决方案。