为动态填充的列表c#添加值

时间:2011-04-12 14:41:32

标签: c# entity-framework asp.net-mvc-3

我正在使用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>

所以,上面的代码可以正常工作,但我一直在搞清楚如何在下拉列表中插入一个空行。

5 个答案:

答案 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");
    }
}