MVC 3 - Entity Framework & POCO - УДАЛЕНИЕ многих ко многим на ActionLink () - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть отношения ко многим ко многим для:

Компания -----> CompanyVenue <------ Место проведения </p>

В настоящее время я могу добавить объекты для компаний и компании к объектам.

enter image description here Ссылка Add Venue приводит пользователя к этому представлению: (используя эту логику контроллера):

var venue = context.Companies.Select(x => x.Venues.Where(xy => xy.VenueId == id));
var company = venue.Select(x => x.);
ViewData["CompanyFor"] = company;
ViewData["VenueFor"] = venue;

enter image description here Когда пользователь выбирает место и нажимает кнопку ADD VENUE , он передает ViewModel обратно в контроллер:

Company c = context.Companies.Single(x => x.CompanyId == model.CompanyId);
Venue v = context.Venues.Single(x => x.VenueId == model.VenueId);
c.Venues.Add(v);
context.SaveChanges();

Так вот как я заполучил добавление Много-Много. Но я ищу некоторую помощь с удалением кодом контроллера / представлением (если необходимо) /, возможно, моделью представления (но на самом деле не вижу необходимости в простом действии)

В представлении сведений о компании я пытаюсь получить УДАЛИТЬ ссылку под каждым элементом объекта, чтобы удалить отношение [CompanyVenue] (many2many).

Если возможно передать 2 значения вместо одного, используя этот тип ActionLink ():

@Html.ActionLink("Remove", "VenueRemove", new { Id = venue.VenueId }, new { Cid = model.CompanyId } )

было бы легко, но я не нашел способ (метод загрузки) передать оба значения (Id и Cid) обратно в действие контроллера VenueRemove (), которое затем вернет RedirectToAction () обратно в компанию Детальный просмотр.

Если кто-то знает, как это сделать, пожалуйста, дайте мне знать. (Спасибо, Дарин, за это замечание)

Я пошел дальше и получил «Удалить работу с использованием представления».

Но есть ли способ заставить «Удалить» работать, просто щелкнув по кнопке «УДАЛИТЬ» / «УДАЛИТЬ» и заставив ее удалить место, не переходя к виду?

Может быть, запрос AJAX или что-то .... ???

1 Ответ

3 голосов
/ 05 апреля 2011

Вы можете передать два параметра в действие VenueRemove следующим образом:

@Html.ActionLink(
    "Remove", 
    "VenueRemove", 
    new { 
        Id = venue.VenueId, 
        Cid = model.CompanyId 
    }
)
...