我有一个强类型视图,如下所示:
<div class="form-group">
@Html.LabelFor(model => model.Text, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Text, "Drop"); @*Error Line*@
@Html.ValidationMessageFor(model => model.Text, "", new { @class = "text-danger" })
</div>
使用下面的模型Class DropdownCheck:
public class DropdownCheck
{
public string Text { get; set; }
public String Test { get; set; }
}
基本上,我不想硬编码值来查看列表项,但希望通过存储过程从数据库绑定它。
所以,为此,我有如下控制器
[HttpGet]
public ActionResult Dropdown()
{
BusDataContext dtnew=new BusDataContext();
ViewBag.Drop = new SelectList(dtnew.Bind_Dropdown().ToList(), "BusSrlNo", "Name");
return View();
}
同样在ViewBag中存储下拉列表ID,文本如上所示。 其中Bind_Dropdown()如下所示
public IEnumerable<DropdownValues> Bind_Dropdown()
{
var res = dt.Get_Bus_Dropdown().ToList();
List<DropdownValues> drop = new List<DropdownValues>();
for (var i = 0; i < res.Count; i++)
{
DropdownValues name = new DropdownValues();
name.drpbusid = Convert.ToInt32(res[i].BusSrlNo);
name.drpbusname = Convert.ToString(res[i].Name);
drop.Add(name);
}
return drop;
}
其中DropdownValues是如下所示的类:
public class DropdownValues
{
public int drpbusid { get; set; }
public string drpbusname { get; set; }
}
存储过程返回下拉值,Text返回BusSrlNo和Name。 完成所有这些工作之后,获得如下的错误编译: :
CS1928:&#39; System.Web.Mvc.HtmlHelper&#39;才不是 包含&#39; DropDownListFor&#39;的定义和最好的扩展 方法过载 &#39; System.Web.Mvc.Html.SelectExtensions.DropDownListFor(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression&gt;中 System.Collections.Generic.IEnumerable)&#39; 有一些无效的论点
答案 0 :(得分:1)
1)改变这一行:
ViewBag.Drop = new SelectList(dtnew.Bind_Dropdown().ToList(), "BusSrlNo", "Name");
进入这个:
ViewBag.Drop = new SelectList(dtnew.Bind_Dropdown().ToList(), "drpbusid", "drpbusname");
2)改变这一行:
@Html.DropDownListFor(model => model.Text, "Drop");
进入这个:
@Html.DropDownList("anyName", ViewBag.Drop as SelectList)
我已经将你的错误复制到了我身边,这是我必须做的唯一两项改变才能让它发挥作用。我希望它对你有帮助。
答案 1 :(得分:0)
我不熟悉您尝试使用的签名(.NET可以绑定像这样的字符串中的值吗?)
@Html.DropDownListFor(model => model.Text, "Drop"); @*Error Line*@
如果将其切换为:
会发生什么@Html.DropDownListFor(m => m.Text,
((IEnumerable<SelectListItem>)ViewBag.Drop.Items))