Модель MVC со свойством для связанных моделей - PullRequest
0 голосов
/ 22 ноября 2018

Представьте, что есть модель, определенная как:

public class Book
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public List<Guid> RelatedBooks { get; set; } // List<Book> would be more ideal.
}

Я пытаюсь добавить поле в представлениях Создать и Изменить, чтобы пользователь мог искать связанные элементы, в этом примерепо имени, а затем добавьте их в новый / текущий элемент как связанный элемент.

Я думаю, что это возможно при частичном представлении + jQuery, где частичное представление действует как поле поиска и возвращает списокПредметы.Затем с помощью некоторых кнопок и магии jQuery их можно добавить в текущую модель после отправки родительской формы.

Я не против использования jQuery, если это единственный вариант, но мне было интересно, есть ли альтернативы?

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

Буду признателен за любую помощь - я бы не стал идти по пути частичного просмотра jQuery +, если есть более чистая альтернатива.

1 Ответ

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

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

public class CreateBookViewModel {
    public Guid Id { get; set; }
    public string Name { get; set; }
    public List<Guid> RelatedBooks { get; set; }

    public List<Book> AllBooks { get; set; }
}

Заполните AllBooks в контроллере и верните модель представления.Затем вы можете создать магию, возможно, с помощью jQuery, чтобы иметь список выбора со всеми книгами, которые при выборе добавляются Id в список связанных книг.По крайней мере, вам не понадобятся частичные просмотры, если вы не хотите больше функциональности, чем просто выбор одной или нескольких книг.

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