为下拉列表提供占位符的模型有问题
Having problems with a model provided placeholder for dropdown
所以我有两个独立工作的案例。
如果我知道下拉列表中有模型数据,我会使用此代码。
@Html.DropDownListFor(model => model.CarID, (SelectList)ViewBag.Cars, htmlAttributes: new { @class = "form-control" })
但是,如果 CarID
是 null
,那么问题来了,列表中的第一项将是下拉列表中的预选项。
在另一种形式中,我使用这个:
@Html.DropDownListFor(model => model.CarID, "--Select a Car--", (SelectList)ViewBag.Cars, htmlAttributes: new { @class = "form-control" })
我的控制器有这个来提供视图数据:
ViewBag.Cars = new SelectList(db.Units, "CarID", "Name", model.CarID);
是否有其中一个我可以使用,只有在模型数据不存在时才会有占位符来填充位置?
在你的第二种方法中,你使用的辅助方法不正确,
应该是
@Html.DropDownListFor(model => model.CarID,(SelectList)ViewBag.Cars,
"Select one", new { @class = "form-control" })
如果没有预先 selected(model.CarID
是 null
),这将呈现带有 "Select one" 选项的下拉列表作为第一个(和默认项) .如果Model.CarID
有一个有效值,它将select相应的选项。
如果你绝对想在 Model.CarID
不为空时删除 "Select one",你可以写一些 javascript 在文档加载时执行(jQuery 文档就绪:) ) 检查 selected 选项并根据需要将其删除。
所以我有两个独立工作的案例。
如果我知道下拉列表中有模型数据,我会使用此代码。
@Html.DropDownListFor(model => model.CarID, (SelectList)ViewBag.Cars, htmlAttributes: new { @class = "form-control" })
但是,如果 CarID
是 null
,那么问题来了,列表中的第一项将是下拉列表中的预选项。
在另一种形式中,我使用这个:
@Html.DropDownListFor(model => model.CarID, "--Select a Car--", (SelectList)ViewBag.Cars, htmlAttributes: new { @class = "form-control" })
我的控制器有这个来提供视图数据:
ViewBag.Cars = new SelectList(db.Units, "CarID", "Name", model.CarID);
是否有其中一个我可以使用,只有在模型数据不存在时才会有占位符来填充位置?
在你的第二种方法中,你使用的辅助方法不正确,
应该是
@Html.DropDownListFor(model => model.CarID,(SelectList)ViewBag.Cars,
"Select one", new { @class = "form-control" })
如果没有预先 selected(model.CarID
是 null
),这将呈现带有 "Select one" 选项的下拉列表作为第一个(和默认项) .如果Model.CarID
有一个有效值,它将select相应的选项。
如果你绝对想在 Model.CarID
不为空时删除 "Select one",你可以写一些 javascript 在文档加载时执行(jQuery 文档就绪:) ) 检查 selected 选项并根据需要将其删除。