如何使用默认值创建一个空的下拉列表?
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为上例添加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();
【讨论】:
以上是关于如何使用默认值创建一个空的下拉列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何设置通过 AJAX 从另一个页面调用的下拉列表的默认值?