Jquery 如何在控制器MVC中将2个参数传递给动作

Jquery 如何在控制器MVC中将2个参数传递给动作,jquery,asp.net-mvc,entity-framework,asp.net-mvc-4,Jquery,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,如果你觉得这个问题有点傻,请原谅。但我对MVC还是个新手 据我所知,这些操作是为无状态工作而设计的。 因此,客户端应该将对象的ID传递给操作,我们将使用存储库(EF)查找对象并执行我们喜欢的操作。我的问题是,物体和艺术家之间存在着多对多的关系 当我在对象的编辑页面上时,我希望在弹出菜单上找到艺术家,并将艺术家添加到我正在编辑的对象中。因此,我在ObjectController中创建了AddArtistToObject操作,如下所示 public ActionResult AddArtistToO

如果你觉得这个问题有点傻,请原谅。但我对MVC还是个新手

据我所知,这些操作是为无状态工作而设计的。 因此,客户端应该将对象的ID传递给操作,我们将使用存储库(EF)查找对象并执行我们喜欢的操作。我的问题是,物体和艺术家之间存在着多对多的关系

当我在对象的编辑页面上时,我希望在弹出菜单上找到艺术家,并将艺术家添加到我正在编辑的对象中。因此,我在ObjectController中创建了AddArtistToObject操作,如下所示

public ActionResult AddArtistToObject(int ObjectID, int ArtistID){
   //code goes here
  }
因此弹出菜单打开,有一个搜索区域来搜索艺术家。您将获得艺术家匹配列表。然后每行都有一个选择按钮。选择按钮href包含ArtistID

我相信我也需要在URL中附加ObjectID

URL将变为: 通过使用jquery,我得到了objectID,并将objectID附加到URL中,使URL类似于

例如,实际的URL变为

你不觉得这个URL也很混乱吗?如果我能像这样更改URl也不会更好

然后在动作中,我使用如下ID检索对象和艺术家

var artist = repository.Artist.First(d=>d.ArtistID==ArtistID);

 repository.Object.First(d=>d.ObjectID==ObjectID).Artists.Add(artist);
  objectsRep.Update();
  objectsRep.SaveChanges();
问题在于,路由根本不会以该操作结束。我设置了断点,但根本不会调用此操作。如何更改URL以调用此操作?另外,您认为这种方法是正确的,还是我应该在继续之前阅读更多关于MVC的内容

应该是,将+替换为&

然后您的控制器操作将以默认路由命中-

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
       name: "Default",
       url: "{controller}/{action}/{id}",
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  );
而控制员的行动是—

    public ActionResult AddArtistToObject(int ObjectID, int ArtistID)
    {
        return null;
    }
输出-


我知道,要传递多个参数,可以执行Url.Action(“AddArtistToObject”、“ControllerName”、new{ObjectID=2,ArtistID=2})之类的操作。数字可以是您的变量。