Добавить значение в динамически заполненный список c # - PullRequest
1 голос
/ 12 апреля 2011

Я создаю веб-страницу на основе ASN.NET MVC3 с шаблонами Razor и Entity.Задача состоит в том, чтобы заполнить @ Html.DropDownList из базы данных, пока все хорошо, но теперь я хочу вставить статическое значение в DropDownList.

Код выглядит следующим образом

Созданиеmethod

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 ]

3 голосов
/ 12 апреля 2011

Я не очень знаком с @ однако, если вы попробовали перегрузку?

@Html.DropDownList("ParentGuid",
    new SelectList(ViewBag.Organizations as System.Collections.IEnumerable,
    "ParentGuid", "Title", Model.ParentGuid), "Your empty option text here")
1 голос
/ 12 апреля 2011

Вы можете добавить строку с пустой строкой в ​​вашу модель, прежде чем передавать ее в представление, нет?

0 голосов
/ 12 апреля 2011

В итоге я использовал

<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");
    }
} 
0 голосов
/ 12 апреля 2011

В вашем контроллере Create () просто добавьте пустую строку в начало списка «родителей».

0 голосов
/ 12 апреля 2011

Вы можете воссоздать массив, предшествующий добавлению его в список. Примерно так:

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);
}

и затем используйте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...