0

我有多對多的關係爲:MVC 3 - 實體框架與POCO - 多對多拆卸上的ActionLink()

公司-----> CompanyVenue < ------ Venue

我目前可以爲場館添加一個場地給公司和公司。

enter image description here 的添加場所鏈接將用戶帶到這種觀點:(使用此控制器邏輯):

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按鈕,它通過視圖模型回控制器:

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(); 

所以這就是我爲許多人添加的。但是,我在尋找一些幫助去除控制器代碼/視圖(如果需要)/可能視圖模型(但實在看不出什麼是必不可少的一個簡單的動作需要)

在公司詳細信息查看我正在嘗試獲取REMOVE鏈接在每個Venue項目下刪除[CompanyVenue](many2many)關係。

如果有可能使用這種類型的ActionLink()來傳遞2個值,而不是一個:

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

這將是容易的,但我還沒有想出一個辦法(負載方法),以通過這兩個值(Id & Cid)返回到VenueRemove()控制器操作,然後返回到公司詳細信息視圖的RedirectToAction()。

如果有人知道如何做,請讓我知道。(感謝Darin爲了這個問題)

我繼續前進,並使用視圖去除工作。

但無論如何,通過點擊REMOVE鏈接/按鈕讓刪除工作,讓它去掉視圖的場地嗎?

也許一個AJAX請求或東西....?

回答

3

可以傳遞兩個參數,以這樣的VenueRemove動作:

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

你知道,我只是想通了這一點大約5分鐘前我檢查回來,看是否有人迴應。在弄清楚之後,我添加了一些控制器代碼來使用2個ID:|||公司c = context.Companies.Single(x => x.CompanyId == Cid); Venue v = context.Venues.Single(x => x.VenueId == Id); c.Venues.Remove(v); 上下文。保存更改(); return RedirectToAction(「Details」,new {id = Cid}); |||但是我收到一個錯誤(請求URL:/ Company/VenueRemove/2)|||有沒有辦法讓Action()與鏈接工作? – 2011-04-05 11:21:53

+0

我想我現在可以創建一個視圖來處理這個問題,但我很希望可以不必將用戶發送到另一個視圖來批准刪除,因爲當我在這個應用程序中得到更進一步的時候,會有幾千僱員---> EmployeeCustomer <---客戶關係,我可以看到在拆除過程中需要很長時間才能得到一些投訴。 – 2011-04-05 11:26:09