Когда мы это делаем:
def foo(a=[]):
...
... мы присваиваем аргумент a
списку unnamed , если вызывающий объект не передает значение a .
Чтобы упростить эту дискуссию, давайте временно присвоим неназванному списку имя. Как насчет pavlo
?
def foo(a=pavlo):
...
В любое время, если вызывающий абонент не сообщает нам, что a
, мы повторно используем pavlo
.
Если pavlo
изменен (модифицируется), а foo
заканчивает его модификацию, эффект, который мы замечаем в следующий раз, foo
вызывается без указания a
.
Итак, это то, что вы видите (помните, pavlo
инициализируется в []):
>>> foo()
[5]
Теперь pavlo
- [5].
Вызов foo()
снова снова изменяет pavlo
:
>>> foo()
[5, 5]
Задание a
при вызове foo()
гарантирует, что pavlo
не коснулся.
>>> ivan = [1, 2, 3, 4]
>>> foo(a=ivan)
[1, 2, 3, 4, 5]
>>> ivan
[1, 2, 3, 4, 5]
Итак, pavlo
все еще [5, 5]
.
>>> foo()
[5, 5, 5]
Конструктор SelectList принимает имена полей (dataValueField
и dataTextField
), которые должны существовать в вашем классе модели.
Вы можете добавить новое поле, чтобы описать то, что вы хотите отобразить как текст (обратите внимание на новое свойство Description
):
public class PersonelModel
{
public int pid { get; set; }
public string pAd { get; set; }
public string pSoyad { get; set; }
public string yonetici { get; set; }
public string Description
{
get
{
return pAd + " " + pSoyad;
}
}
}
Теперь вы можете отобразить pAd + pSoyad в качестве значения текста в SelectList: [ 118]
ViewBag.yonetici = new SelectList(db.Personel, "pAd", "Description")