У меня есть класс, одним из свойств которого является IEnumerable<SelectListItem>
. Я использую этот список для заполнения раскрывающегося списка @Html.DropDownListFor()
— это работает, и я получаю ожидаемые значения в своем раскрывающемся списке.
Однако я хочу изменить текстовое значение, которое отображается в раскрывающемся списке.
Я думаю, что одним из способов сделать это было бы изменить значение в Getter примерно так:
public IEnumerable<SelectListItem> ShippingQuotes
{
get { return ShippingQuotes; }//SomethingHere to modify the text property of the Select List Items;
set { ShippingQuotes = value; }
}
Может ли кто-нибудь помочь мне с синтаксисом здесь?
Вы можете просто изменить его текст, используя Select()
:
public IEnumerable<SelectListItem> ShippingQuotes
{
get { return shippingQuotes.Select(x => {x.Text = "Some Text" + x.Text; return x;}); }
set { ShippingQuotes = value; }
}
Я вижу, что ты делаешь. Никогда не рекомендуется вносить изменения в Select
. Его следует использовать для запросов, а не для редактирования.
Я не согласен, если бы мы просто запрашивали, мы бы использовали Where
, Select
используется для сопоставления и модификации
Это нарушает принципы функционального программирования, поскольку имеет побочные эффекты. Вы можете продолжать делать это, но я просто хотел, чтобы вы знали. Теперь ты знаешь.
На самом деле, когда я сделал это по какой-то причине, он просто продолжал падать во время выполнения. НО... синтаксис был правильным, я просто применил его после того, как получил значение, а не в геттере, спасибо, работает, помечая это как правильное, как то, что мне нужно.
@AyoAdesina Я рад, что смог помочь.
Посмотрите внимательно на конструкторы
SelectListItem
и используйте тот, который соответствует вашим потребностям. Это очень просто.