0

我有多对多关系:

公司 -----> 公司地点 <----- 地点

我目前可以将场地添加到公司和公司到场地。

在此处输入图像描述 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 请求之类的...... ???

4

1 回答 1

3

您可以像这样将两个参数传递给VenueRemove操作:

@Html.ActionLink(
    "Remove", 
    "VenueRemove", 
    new { 
        Id = venue.VenueId, 
        Cid = model.CompanyId 
    }
)
于 2011-04-05T11:11:00.130 回答