Создать список выбора с разделителем в Html Helper - PullRequest
1 голос
/ 17 августа 2010

Я пытаюсь создать список выбора, который будет содержать некоторые приоритетные значения, затем разделитель, а затем остальные значения.Мне нужно сделать это в Html Helper, так как я получу значения, которые будут иметь приоритет, а остальные значения из разных источников.

Пример того, чего я хочу достичь:

EUR
GBP
USD
---
SEK
ZAR
.
.
.

Я также хочу убедиться, что разделитель невозможно выбрать.Если я сделаю это прямо в html, мне удастся это сделать, но мне не удастся отключить разделитель при выполнении этого через помощника.Есть идеи как это сделать?

1 Ответ

5 голосов
/ 18 августа 2010

Я закончил тем, что создал вспомогательный метод html, который берет два моих списка, и для каждого элемента создает новый тег типа «option» и добавляет его в список выбора. Таким образом, я могу добавить атрибуты, такие как "disabled =" disabled "" и так далее.

Это не аккуратно, это не аккуратно. Честно говоря, это ужасный код, и мне бы хотелось иметь лучший способ сделать это. Тем не менее, на данный момент не хватает времени, чтобы выполнить мою задачу, поэтому в конечном итоге сделать так:

var fullList = new StringBuilder();

var selectList = new TagBuilder("select");
selectList.Attributes.Add("name", "currencies");
selectList.Attributes.Add("id", "selectCurrency");

foreach (var currency in currencies)
{
    var option = new TagBuilder("option") {InnerHtml = currency.Id};
    option.Attributes.Add("value", currency.Id);
    fullList.AppendLine(option.ToString());
}

var separator = new TagBuilder("option") { InnerHtml = "-------" };
separator.Attributes.Add("disabled", "disabled");
fullList.AppendLine(separator.ToString());

selectList.InnerHtml = fullList.ToString();

Если у вас есть лучший способ, пожалуйста, дайте мне знать, и я мог бы вернуться к этой задаче позже для некоторого рефакторинга, и я хотел бы иметь хороший способ сделать это тогда.

...