2010-10-03 2 views
0

У меня есть несколько таблиц, которые все связаны с центральной таблицей с внешними ключами. Я хочу, чтобы иметь возможность создать новую запись в таблице 2, но у меня проблемы, потому что я не знаю, как создать новый экземпляр записи таблицы 2, ссылаясь на идентификатор записи, к которой он привязан.ASP.net MVC создает запись таблицы с внешним ключом

Пример:

База данных: Коллекция

Таблица: Коллекция Поле 1: Идентификатор Поле 2: имя

Таблица: Книга Поле 1: CollectionID Поле 2: Идентификатор Поле 3 : name

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

Должна ли книга иметь контроллер отдельно от коллекции, или должен ли контроллер коллекции иметь метод createBook, отдельно от собственного метода создания?

Я хочу вызвать метод createBook (из своего собственного контроллера или контроллера коллекции) из представления «Сведения о коллекции».

Когда я вызываю метод создания книги, как мне создать новую книгу, созданную с помощью набора collectionId, из представления деталей элемента Collection, указанного в представлении деталей?

Я должен указать, я использую структуру сущности для своей модели, и я определенно новичок в этом.

Спасибо за любую помощь

ответ

1

Старайтесь не создавать/отдельные контроллеры на основе модели объекта, создание/разделить их на основе пользовательского интерфейса и URL маршрутов.

Я предполагаю, что у вас есть вид под названием «CreateBook», который (надеюсь) привязан к строго типизированной сущности «Книга».

При отправке формы у вас должен быть метод контроллера с [HttpPost].

Затем вы можете сделать это, чтобы представить книгу:

string bookName = Request.Form["Name"]; 
int collectionId = Request.Form["CollectionID"]; 

или передать его через как сильно типизированных модели:

public ActionResult CreateBook(Book book) { } 

Тогда вы сделаете это:

Book newBook = new Book (book.Name, book.CollectionID); 
someDal.CreateBook(newBook); 

Когда вы импортируете свою модель в EDMX, убедитесь, что вы отметили «Включить внешние ключи в модель».

Что это значит, добавьте «CollectionID» FK к объекту книги, что позволяет вам привязываться к нему и иметь доступ к этому свойству в каждой модели книги.

Существует действительно хорошая статья here о действиях CRUD с сильно типизированными ASP.NET MVC Views, должна поставить вас на правильный путь.

HTH.

+0

Большое спасибо за помощь! –

+0

Не беспокойтесь. :) – RPM1984

+0

Итак, я понимаю этот пример, но если я пытаюсь автоматически вставить правильный идентификатор коллекции, без этого элемента, появляющегося в форме, как бы я это сделал? Итак, если у коллекцииDetailsView есть ссылка на createNewBook, как я могу указать метод [HttpPost] createNewBook, что идентификатор collectionID - это тот, из которого была получена ссылка? –

Смежные вопросы