我正在尝试构建一个选择列表,其中将包含一些优先值,然后是分隔符,然后是其余值。我需要在 Html Helper 中执行此操作,因为我将获得将被优先考虑的值以及来自不同来源的其余值。
我想要完成的示例:
EUR
GBP
USD
---
SEK
ZAR
.
.
.
我还想确保无法选择分隔符。如果我直接在 html 中执行此操作,我已经设法执行此操作,但是在通过帮助程序执行此操作时我没有设法禁用分隔符。任何想法如何做到这一点?
我正在尝试构建一个选择列表,其中将包含一些优先值,然后是分隔符,然后是其余值。我需要在 Html Helper 中执行此操作,因为我将获得将被优先考虑的值以及来自不同来源的其余值。
我想要完成的示例:
EUR
GBP
USD
---
SEK
ZAR
.
.
.
我还想确保无法选择分隔符。如果我直接在 html 中执行此操作,我已经设法执行此操作,但是在通过帮助程序执行此操作时我没有设法禁用分隔符。任何想法如何做到这一点?
我最终创建了一个 html 辅助方法,该方法采用我的两个列表,并为每个项目创建一个“选项”类型的新标签,并将其添加到选择列表中。这样我就可以添加属性,比如“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();
如果您有更好的方法,请告诉我,我稍后可能会重新访问此任务进行一些重构,并且希望有一个好的方法来完成它。