【问题标题】:DropDownListFor ASP MVC4DropDownListFor ASP MVC4
【发布时间】:2013-10-01 08:28:01
【问题描述】:

我收到此错误“CS1928:

'System.Web.Mvc.HtmlHelper' 确实 不包含“DropDownListFor”的定义和最佳扩展名 方法重载 'System.Web.Mvc.Html.SelectExtensions.DropDownListFor(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>, System.Collections.Generic.IEnumerable)' 有一些无效的参数”

我的控制器是这样的

    public class IndexController : Controller
{
       public ActionResult Index()
       {
               EpfeSelectScreen model = new EpfeSelectScreen();

               var b = (from a in dbEntitiesErste.CONFIG_APPLICATIONS
                               orderby a.APPLICATION_ID
                               select new EPFE.CustomDataObjects.CustomObjects
                               {
                                   Text = a.APPLICATION_NAME,
                                   Value = a.APPLICATION_ID
                               });

               model.Application = b.OrderBy(x => x.Text).ToList();

               return View(model); 




       }
}

我的模型是这个

    public class EpfeSelectScreen
{ 
    public string Search { get; set; }
    public string selectedApplication { get; set; }
    public List<SelectListItem> Country { get; set; }
    public List<CustomObjects> Application { get; set; }
    public List<SelectListItem> MetaData { get; set; }
    public List<SelectListItem> References { get; set; }
    public List<SelectListItem> ReferencedBy { get; set; }
    public List<SelectListItem> TreeView { get; set; }       

    public EpfeSelectScreen()
    {
        Country = new List<SelectListItem>();
        Application = new List<CustomObjects>();           
        References = new List<SelectListItem>();
        ReferencedBy = new List<SelectListItem>();
        TreeView = new List<SelectListItem>();        
    }
}

我的自定义对象是这个

    public class CustomObjects
{
    public string Text { get; set; }
    public short Value { get; set; }
}

我的 model.Application 中有一条记录,但是当该数据传递到我的视图时,我得到了那个错误。

我的视图看起来像这样

@model EPFE.Controllers.EpfeSelectScreen
@Html.DropDownListFor(m => m.selectedApplication, Model.Application) 

如何解决这个问题?我究竟做错了什么?当我尝试使用 ListBoxFor 时,我得到了同样的错误。

【问题讨论】:

    标签: c# asp.net-mvc-4 razor


    【解决方案1】:

    DropDownListFor 在您传递List 时将SelectList 作为第二个参数。

    你可以有类似下面的东西:

    @Html.DropDownListFor(m => m.selectedApplication, 
                         new SelectList(Model.Application,"Value","Text"))
    

    【讨论】:

    • 成功了。谢谢你。我不知道 SelectList 和 List 的那部分。你帮了我很多。
    【解决方案2】:

    对于将项目添加到下拉列表,您可以使用 ViewData 将值传递给下拉列表。

    在控制器中: 你可以有这样的场景

           IList<SelectListItem> SelectedOptions = new List<SelectListItem>();
            IList<Options> DropDownOptions = new List<Options>();
            //Add items to this shipping
            foreach (var item in DropDownOptions)
            {
                SelectListItem sliItem = new SelectListItem();
                string optionText = item._name;
                sliItem.Value = item._value.ToString();
                sliItem.Text = optionText;
                SelectedOptions.Add(sliItem);
            }
            ViewData["Option"] = SelectedOptions;
    

    在视图中你可以简单地使用

     @Html.DropDownList("Option", ViewData["Option"] as SelectList)
    

    如果您正在使用类提交表单,请记住在类中放置一个带有 name 选项的字符串属性,以便您可以在控制器中使用它以及提交表单时选择的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      相关资源
      最近更新 更多