Как получить путь к файлу динамически с помощью python? [Дубликат]

Как следует из названий методов, DropDownListFor() предназначен для создания (для выбора нескольких параметров). Хотя оба метода имеют много общего кода, они дают разные результаты.

Добавление атрибута multiple="multiple" изменяет отображение, но оно не изменяет функциональность кода, выполняемого этими методами.

Если вы проверите исходный код , вы заметите, что все перегрузки DropDownListFor() в конечном итоге вызовут метод private static MvcHtmlString DropDownListHelper(), и аналогичным образом ListBoxFor() в конечном итоге вызывает метод private static MvcHtmlString ListBoxHelper() .

Оба эти метода называют метод private static MvcHtmlString SelectInternal(), но разница в том, что DropDownListHelper() проходит allowMultiple = false, а ListBoxHelper() проходит allowMultiple = true.

Внутри SelectInternal(), ключевая строка кода

object defaultValue = (allowMultiple) ? htmlHelper.GetModelStateValue(fullName, typeof(string[])) : htmlHelper.GetModelStateValue(fullName, typeof(string));

Затем значение defaultValue используется при построении html для элементов и используется для установки атрибута selected (s ).

В случае ListBoxFor() значение defaultValue будет массивом, определенным вашим свойством SelectedAssignees. В случае DropDownListFor() он возвращает null, потому что значение вашего свойства нельзя передать в string (его массив).

Поскольку defaultValue - null, ни один из имеют атрибут selected, и вы теряете привязку к модели.

Как побочная заметка, если вы должны были установить значения SelectedAssignees в методе GET, прежде чем передавать модель на в представлении вы увидите, что ни один из них не выбран при использовании DropDownListFor() по тем же причинам, что описаны выше.

Обратите также внимание, что код для генерации SelectList должен быть просто

vm.TasksFilterGroup.Assignees = new SelectList(employees, "Id", "FullName" });

Нет смысла устанавливать третий параметр при использовании методов DropDownListFor() или ListBoxFor(), потому что его значение свойства связывается с (SelectedAssignees), которое определяет, какие параметры выбраны (третий параметр игнорируется методами). Если вы хотите, чтобы параметры, соответствующие этим значениям Guid, были выбраны, затем в методе GET используйте

vm.TasksFilterGroup.SelectedAssignees= new string[]{ "51b6f06a-e04d-4f98-88ef-cd0cfa8a2757", "51b6f06a-e04d-4f98-88ef-cd0cfa8a2769" };

31
задан approxiblue 3 January 2017 в 17:05
поделиться

2 ответа

import os
print os.getenv('APPDATA')
61
ответ дан Jon Clements 20 August 2018 в 13:06
поделиться
  • 1
    Обратите внимание, что это возвращает AppData\Roaming. Вам нужно %LOCALAPPDATA%, если вы ищете AppData\Local. – Baris Demiray 27 September 2016 в 16:42

Вы можете попробовать:

import os
path = os.getenv('APPDATA')
array = os.listdir(path)
print array
1
ответ дан sotoz 20 August 2018 в 13:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: