DropdownList, чтобы не выбирать значение из выпадающего - PullRequest
0 голосов
/ 04 марта 2019

Я просмотрел все опубликованные запросы по этому поводу, но не нашел решения. Это контроллер. Не знаю, где я ошибаюсь` *

string path = LibConf.dllAppSetting("graphcsvfiles");
System.IO.DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] files  = d.GetFiles("*.csv");//Directory.GetFiles(path).Where(s => s.EndsWith("*.csv"));
IEnumerable<SelectListItem> selectLists = files.Select(x => new SelectListItem { Text = x.Name, Value = x.FullName });

MyTestModel m = new MyTestModel;
m.filenames = selectLists;
return View(m);

Это модель

[DisplayName("File")]
public string File { get; set; }
public IEnumerable<SelectListItem> filenames {get; set;}

Просмотр:

 <td>
    @Html.LabelFor(m => m.File)
    @Html.DropDownListFor(m => m.File, new SelectList(Model.filenames, "Text", "Value"), "-select type-", new { @class = "css-class", @style = "margin-right:4px; width:150px;height:28px" })
  </td>

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

После всех обходных путей я заметил, что @ Html.DropDownListFor не работает должным образом внутри «td».Тот же код, когда он находится вне "td", работает правильно.

0 голосов
/ 05 марта 2019

Основная причина, по которой раскрывающийся список не выбирает значение, заключается в том, что вы никогда не указывали, какое значение следует выбрать:

MyTestModel m = new MyTestModel();
m.FileNames = selectLists;

Вы никогда не назначали значение для m.File, котороеэто выбранное значение для раскрывающегося списка в этом случае.Следовательно, в раскрывающемся списке по умолчанию будет использоваться только метка вашего параметра.

Вам нужно сделать:

MyTestModel vm = new MyTestModel
{
    File = "KEY_VALUE_THAT_IS_ON_THE_LIST",
    FileNames = selectLists
};

return View(vm);

Также я хотел бы исправить 2 ваших стиля / проблемы кодирования, так как вы довольноНовое в MVC:

1.@Html.DropDownListFor не работает внутри <td> ??

Нет.Выпадающий список / выбор является допустимым элементом внутри ячейки таблицы.Смотрите скриншот ниже.

enter image description here

2.Ваша модель представления уже содержит список выбора

Вы создаете IEnumerable<SelectListItem> для модели представления, и она передается в SelectList в представлении для отображения в виде раскрывающегося списка.IEnumerable<SelectListItem> является SelectList!Вам не нужно создавать еще один и снова передавать в него список SelectListItem.

Вместо этого вы можете просто сделать:

@Html.LabelFor(x => x.File)
@Html.DropDownListFor(x => x.File, Model.FileNames, "- select type -" ... })
0 голосов
/ 04 марта 2019

В этом коде нет ничего плохого.Убедитесь, что вы импортировали свою модель в вид

 @model WebApplication.Models.MyTestModel 

<td>
    @Html.LabelFor(m => m.File)
    @Html.DropDownListFor(m => m.File, new SelectList(Model.filenames, "Text", "Value"), "-select type-", new { @class = "css-class", @style = "margin-right:4px; width:150px;height:28px" })
  </td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...