我正在使用Razor模板和实体构建基于ASN.NET MVC3的网页。任务是从数据库填充@ Html.DropDownList,到目前为止还不错,但现在我想在DropDownList中插入一个静态值。
代码如下
创建方法
public ActionResult Create()
{
var parents = db.Organizations.OrderBy(o => o.Title).ToList();
var organization = new Organization();
return View(organization);
}
从Razor模板中提取
<div class="editor-field">
@Html.DropDownList("ParentGuid",
new SelectList(ViewBag.Organizations as System.Collections.IEnumerable,
"ParentGuid", "Title", Model.ParentGuid))
</div>
所以,上面的代码可以正常工作,但我一直在搞清楚如何在下拉列表中插入一个空行。
答案 0 :(得分:3)
但是,如果您尝试过载,我对@
并不熟悉吗?
@Html.DropDownList("ParentGuid",
new SelectList(ViewBag.Organizations as System.Collections.IEnumerable,
"ParentGuid", "Title", Model.ParentGuid), "Your empty option text here")
答案 1 :(得分:1)
在将模型传递给视图之前,您可以向模型中添加一个空字符串的行,不是吗?
答案 2 :(得分:0)
您可以在将数组添加到列表之前重新创建数组。像这样:
List<SelectListItem> itms = new List<SelectListItem>();
var blank = new SelectListItem();
blank.Selected = true;
itms.Add(blank);
foreach (var stat in model)
{
var s = new SelectListItem();
s.Text = stat.Text;
s.Value = stat.FeedBackTypeID + "";
itms.Add(s);
}
然后使用
答案 3 :(得分:0)
在你的控制器Create()中,只需在“父母”列表的头部添加一个空字符串。
答案 4 :(得分:0)
我最终使用
<div class="editor-field">
@Html.DropDownListFor(model => model.ParentGuid,
new SelectList(ViewBag.Organizations as System.Collections.IEnumerable,
"OrganizationGuid", "Title", Model.ParentGuid), "")
</div>
为模板提供服务的方法如下所示
public ActionResult Create()
{
try
{
ViewBag.Organizations = db.Organizations.OrderBy(o => o.Title).ToList();
var organization = new Organization();
return View(organization);
}
catch (Exception e)
{
ViewData["error"] = string.Concat(e.Message, " ", e.StackTrace);
return RedirectToAction("Index");
}
}