C# 如何在ASP.NETMVC中使用JQuery.Ajax传递多个参数
大家好,我是JSon新手,不太确定如何传递数据。我使用ASP.NETMVC作为我的开发平台 他认为: 在Global.asax中: 因为我只在$.ajaxURL中传递了一个参数'photocegory',所以一切都可以这样工作。我现在的目标是传递第二个参数,即userID,因此我可以在下面的控制器方法中使用这两个参数 在控制器中:C# 如何在ASP.NETMVC中使用JQuery.Ajax传递多个参数,c#,asp.net-mvc,asp.net-mvc-2,jquery,C#,Asp.net Mvc,Asp.net Mvc 2,Jquery,大家好,我是JSon新手,不太确定如何传递数据。我使用ASP.NETMVC作为我的开发平台 他认为: 在Global.asax中: 因为我只在$.ajaxURL中传递了一个参数'photocegory',所以一切都可以这样工作。我现在的目标是传递第二个参数,即userID,因此我可以在下面的控制器方法中使用这两个参数 在控制器中: 有人知道如何编写$.ajax方法,以便我可以将这两个参数传递给控制器吗?谢谢 取决于你想如何通过考试。您正在执行GET,但您的路由不支持用户ID作为路由参数,因此您可
有人知道如何编写$.ajax方法,以便我可以将这两个参数传递给控制器吗?谢谢 取决于你想如何通过考试。您正在执行GET,但您的路由不支持用户ID作为路由参数,因此您可以在查询字符串中传递它。URL应该是/FindPhotos/lolcats?UserId=123 也就是说,您是想让此人选择用户,还是要使用当前登录用户的用户id。如果是后者,我认为你只要从控制器那里拿到它,保持路线干净就行了 本着保持路线整洁的精神,我实际上会将路线更改为如下所示:
routes.MapRoute(
"FindPhotos",
"FindPhotos/{category}/{userId}",
new { controller = "Clinical", action = "FindPhotosByCategory", category = "", userId=UrlParameter.Optional }
);
这将使您可以选择将userId设置为可选,然后根据是否提供它进行过滤。然后,您的ajax调用变成:
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: "/FindPhotos/" + photoCategory + "/" + userId ,
data: "{}",
dataType: "json",
最后,它与JSON无关,而与如何调用URL有关。同样,这是GET,因此您可以将其传递到URL上,然后就可以了
另一方面——我相信您也知道——出于安全考虑,我会尽量避免将实际用户ID放入标记或其他任何地方。如果必须这样做,请确保在代码的业务逻辑/数据访问部分以某种方式保护访问。我认为问题在于,您试图在控制方法类别UserId中传递2个参数,但在路由中,您只接受1,即类别 或者将您的路线更改为
routes.MapRoute(
"FindPhotos",
"FindPhotos/{category}/{userId}",
new { controller = "Clinical", action = "FindPhotosByCategory", category = "", userId="" }
);
或者将控制方法更改为
public JsonResult FindPhotosByCategory(string category) {
//pass your userid from code behinde
....
}
您可以在$.ajax这样的数据参数中发送任意数量的数据
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: "/FindPhotos/" + photoCategory,
data: {UserID = "34", UserName = "George", Key = "Value"},
dataType: "json"
});
所有这些值都将附加到查询字符串中,而不是作为路由值。如果你想要路由值,那么是的,你必须为此编写一个匹配的路由。您好,非常感谢您的帮助。我同意你关于在URL中使用用户ID的安全性。是否有办法使用global.asax中的路由表屏蔽用户id?或者有更好的方法隐藏它吗?它是当前登录用户的Id吗?
routes.MapRoute(
"FindPhotos",
"FindPhotos/{category}/{userId}",
new { controller = "Clinical", action = "FindPhotosByCategory", category = "", userId="" }
);
public JsonResult FindPhotosByCategory(string category) {
//pass your userid from code behinde
....
}
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: "/FindPhotos/" + photoCategory,
data: {UserID = "34", UserName = "George", Key = "Value"},
dataType: "json"
});