我有多对多关系:
公司 -----> 公司地点 <----- 地点
我目前可以将场地添加到公司和公司到场地。
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;
一旦用户选择场地并单击添加场地按钮,它将 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) 关系。
如果可以使用这种类型的 ActionLink() 传递 2 个值而不是一个值:
@Html.ActionLink("Remove", "VenueRemove", new { Id = venue.VenueId }, new { Cid = model.CompanyId } )
这很容易,但我还没有找到一种方法(加载方法)将两个值( Id 和 Cid )传递回 VenueRemove() 控制器操作,然后将 RedirectToAction() 返回到公司详细信息视图。
如果有人知道该怎么做,请告诉我。(感谢达林为此提供的遮阳篷)
我继续使用视图进行删除工作。
但是有没有办法通过单击“删除链接/按钮”来让“删除”工作,并让它在不进入视图的情况下删除场地?
也许是 AJAX 请求之类的...... ???