Jquery 如何在控制器MVC中将2个参数传递给动作
如果你觉得这个问题有点傻,请原谅。但我对MVC还是个新手 据我所知,这些操作是为无状态工作而设计的。 因此,客户端应该将对象的ID传递给操作,我们将使用存储库(EF)查找对象并执行我们喜欢的操作。我的问题是,物体和艺术家之间存在着多对多的关系 当我在对象的编辑页面上时,我希望在弹出菜单上找到艺术家,并将艺术家添加到我正在编辑的对象中。因此,我在ObjectController中创建了AddArtistToObject操作,如下所示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
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})之类的操作。数字可以是您的变量。