Как жестко закодировать список выбора из значения? - PullRequest
0 голосов
/ 03 ноября 2018

На моей странице редактирования, используя EditorFor, для редактирования значения местоположения.

@Html.EditorFor(model => model.location, new { htmlAttributes = new { @class = "form-control" , id = "testing" } })

Но я бы хотел, чтобы редактирование этого значения происходило из списка жесткого кода, как показано ниже.

Как я могу сделать так, чтобы оно по умолчанию имело правильное значение и иметь возможность выбирать другие опции.

 var selectLocation = new SelectList(
     new List<SelectListItem>
     {

            new SelectListItem {Text = "State", Value = "State"},
             new SelectListItem {Text = "International", Value = "International"},
              new SelectListItem {Text = "test2", Value = "test2"},
     }, "Value", "Text");

1 Ответ

0 голосов
/ 03 ноября 2018

Помощник @Html.EditorFor(), используемый для генерации <input> элементов, а не <select>. Вы должны использовать свойство с типом IEnumerable<SelectListItem> в модели представления:

public class ViewModel
{
    public string location { get; set; }

    public List<SelectListItem> Locations { get; set; }
}

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

var model = new ViewModel();

var selectLocation = new List<SelectListItem>()
{
    new SelectListItem {Text = "State", Value = "State"},
    new SelectListItem {Text = "International", Value = "International"},
    new SelectListItem {Text = "test2", Value = "test2"},
};

model.Locations = selectLocation;

// return the view with existing viewmodel
return View(model);

Затем используйте помощник @Html.DropDownListFor() для генерации элемента <select> со списком опций:

@Html.DropDownListFor(model => model.location, Model.Locations, ...)

Примечание:

1) Если вы уже создали List<SelectListItem> объект, нет необходимости преобразовывать его в SelectList объект, поскольку SelectList также имеет тип IEnumerable<SelectListItem> для списка параметров.

2) В качестве альтернативы вы можете использовать ViewBag для передачи объекта List<SelectListItem>, но описанный выше подход в основном используется для строго типизированного списка параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...