public static class EnumHelper
{
public static SelectList EnumToSelectList<TEnum>(this Type enumType, object selectedValue)
{
new SelectList(Enum.GetValues(enumType).Cast<TEnum>().ToList().ToDictionary(n=> n), "Key", "Value", selectedValue);
}
}
И в вашем представлении:
@Html.DropDownListFor(model => model.Role, EnumHelper.EnumToSelectList<Role>(typeof(Role), Model.Role), new { htmlAttributes = new { @class = "padding_right" } })
@Html.ValidationMessageFor(model => model.Role, "", new { @class = "text-danger" })
Вместо EnumToList используйте любой другой список и выберите «Ключ и значение ваших свойств списка»
Ваш цикл для повышения NameError
. вы не можете получить доступ к элементам списка в цикле for, как этот. измените его на этот, чтобы напечатать желаемый результат:
for char in str1:
if char in list1:
print(char)
a
a
b
для печати своей позиции вы можете использовать index
:
for char in str1:
if char in list1:
print(list1.index(char))
0
0
1
С вашим кодом довольно много проблем.
Как @Kenny Ostrom указал в своем ответе, ваш for
формат неверен.
Формат цикла for
:
for new_variable_name in list:
print(new_variable_name)
new_variable_name
назначается каждому элементу в этом списке
for
циклы повторяются для каждого элемента в списке один раз. В вашем случае
for char in str1
print(char)
напечатало бы
a
a
b
f
h
Другая проблема, с которой вы столкнулись, - это ненужный цикл while
. Вы окружаете свой цикл for
в цикле while
, который будет продолжать работать и не останавливаться. Если у вас не было цикла for
, это может быть полезно для вас, но в этом нет необходимости, поскольку вы уже используете цикл for
.
Структура вашей программы должна выглядеть примерно так, если вы хотите использовать цикл for:
list1=['a','b','c']
str1='aabfh'
i=0
for character in str1:
'''
Some code here that figures out **if** the character is in list1 and then prints that character.
'''
Вы сможете понять это отсюда.