Как добавить динамические элементы управления, используя класс модели в MVC без цикла или JQuery - PullRequest
0 голосов
/ 02 апреля 2019

Как преобразовать класс модели в динамические элементы управления в представлении без цикла? Я хочу создать, если флажок, чем показать элемент управления флажок, если раскрывающийся список, чем показать раскрывающийся список, если текст, чем создать текстовое поле.

 public class DataSources
    {

        public int Id { get; set; }
        [DisplayName("text")]
        public string Name { get; set; }
        [DisplayName("text")]
        public string Phone { get; set; }
        [DisplayName("checkbox")]
        public bool Active { get; set; }

        [DisplayName("dropdown")]
        //[Column(TypeName = "dropdown")]
        public List<DataSources> MyList { get; set; }

    }

Ответы [ 3 ]

1 голос
/ 03 апреля 2019

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

@model MVCApp.Models.DataSource
@Html.EditorForModel()

с помощью этого автоматически создает динамические элементы управления.

1 голос
/ 02 апреля 2019

Вы можете использовать HTML-помощник Editorfor, который связывает элемент управления на основе типа модели. Например, если тип является строкой, он будет принимать текстовое поле, а если это список, он будет привязывать выпадающий список:

@Html.EditorFor(model => model.Propertyname)

Вы можете найти ссылку здесь для подробного объяснения - https://www.steelcm.com/how-to-use-the-html-editor-for-method/

0 голосов
/ 02 апреля 2019

Класс не поддерживает ни одного такого свойства для динамического управления этими вещами. Один из способов реализации этого заключается в следующем:

Мой метод ActionResult будет похож на (рассмотрим это как пример данных):

DataSource model = new DataSource();
model.MyList = new List<DataSource>();
var data = new DataSource()
{
    Id = 1,
    Name = "test"
 };
 model.MyList.Add(data);
 return View(model);

Это вернет данные в представление. И ваш вид должен выглядеть примерно так:

@model MVCApp.Models.DataSource

@if (Html.DisplayNameFor(x => x.Name).ToString() == "text")
{
    @Html.TextBoxFor(model => model.Name)
}
@if (Html.DisplayNameFor(x => x.Phone).ToString() == "text")
{
    @Html.TextBoxFor(model => model.Phone)
}

@if (Html.DisplayNameFor(x => x.Active).ToString() == "checkbox")
{
    @Html.CheckBoxFor(model => model.Active)
}
@if (Html.DisplayNameFor(x => x.MyList).ToString() == "dropdown")
{
    @Html.DropDownListFor(m => m.Id,
                new SelectList(Model.MyList.Select(x=>x.Name)),
                "-- Select --")
}

Это сработало для меня. Вам нужно создать свой собственный помощник HTML, чтобы добиться этого более эффективно.

Дайте мне знать, если это поможет!

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