如何使用默认值创建一个空的下拉列表?

Posted

技术标签:

【中文标题】如何使用默认值创建一个空的下拉列表?【英文标题】:How to create an empty dropdown list with default value? 【发布时间】:2013-03-26 14:57:27 【问题描述】:

我想创建一个只有默认值的空下拉列表。我使用以下代码:

@html.DropDownList("parent","--Select Parent--")

但是在运行时我看到了这个错误:

没有“IEnumerable”类型的 ViewData 项 有键'父'。

我该如何解决? 谢谢。

【问题讨论】:

试试这个@Html.DropDownList(null, "--Select Parent--") @MichaelPerrenoud :现在错误更改为:Value 不能为 null 或为空。参数名称:名称 好的,那就不行了。您需要遵循@Shyju 的指示。问题是它试图绑定到一个名为“parent”的属性。 您可以简单地创建一个 HTML 选择选项。但问题仍然存在,为什么要创建一个空的下拉列表?好的方法是为 NEW 和 EDIT 创建一个页面并使用 ViewModel 生成数据。 【参考方案1】:

你可以像这样构建一个空的 DropDownList:

@Html.DropDownList("parent", Enumerable.Empty<SelectListItem>(), "--Select Parent--")

参考:Build an empty MVC DropdownListFor for a Cascade Sub-List

【讨论】:

谢谢你部分帮助我返回空下拉列表。我的代码:IW.SelItemList = new SelectList(Enumerable.Empty());【参考方案2】:

为上例添加html属性:

    @Html.DropDownList("Idparent", Enumerable.Empty<SelectListItem>(), "Select one...", new @class="form-control")                 

【讨论】:

来自审核队列:我可以请求您在源代码周围添加一些上下文。仅代码的答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。【参考方案3】:

您可以简单地在视图中创建一个 HTML 选择选项。

<select id="parent" name="parent">
   <option value="">Select parent </option>
</select>

编辑: 根据评论

当您提交表单时,您可以通过parent 名称的参数来获取所选值

[HttpPost]
public ActionResult Create(string parent,string otherParameterName)

  //read and save and return / redirect

在您用于模型绑定的 ViewModel 中有一个 parent 属性。

public class CreateProject

  public string parent  set;get;
  public string ProjectName  set;get;

在你的行动方法中。

[HttpPost]
public ActionResult Create(CreateProject model)


  // check model.parent value.

【讨论】:

但是这种 HTML 对象不会以这样的形式提交:@using (Html.BeginForm()) 当然会。无论您使用什么 Helper 方法(例如:Html.DropDownListFor),也只会生成这样的 HTML 标记。在您的 HttpPost 操作中,您可以使用 parent 参数或在视图模型中使用 parent 属性。 只是我的下拉列表的名称应该与我的视图模型中的属性相同。不需要在我的控制器中获取它。在控制器中我只需要获取一个类型为变量视图模型。MVC 的艺术......【参考方案4】:

你可以在你的控制器中做这样的事情来构建一个空的下拉列表

    ViewBag.ClassID = new SelectList(db.Classes.Where(c => c.ClassID == 0)  , "ClassID", "ClassName").ToList();

【讨论】:

以上是关于如何使用默认值创建一个空的下拉列表?的主要内容,如果未能解决你的问题,请参考以下文章

将下拉列表中的第一个值设置为 php 中的默认值

如何设置通过 AJAX 从另一个页面调用的下拉列表的默认值?

如何使用 jQuery 清除按钮单击事件的下拉列表值?

如何使用带有逗号分隔值的单元格通过apps脚本创建动态下拉列表

使用 jQuery AJAX 将数据库默认值添加到下拉列表

Angular 2 - 如何使用下拉列表的值生成表单?