Asp.net mvc 在参数MVC4中传递URL
我有一个收集URL的网站。在文本框中输入完整的HTTP URL。在参数中传递URL时,出现400错误。它适用于常规文本 使用jQuery,如何在应用程序中传递完整的URL MVC路由配置:Asp.net mvc 在参数MVC4中传递URL,asp.net-mvc,jquery,Asp.net Mvc,Jquery,我有一个收集URL的网站。在文本框中输入完整的HTTP URL。在参数中传递URL时,出现400错误。它适用于常规文本 使用jQuery,如何在应用程序中传递完整的URL MVC路由配置: routes.MapRoute("UploadLinks", "media/upload_links/{link}/{albumID}", new { controller = "Media", action = "WebLinkUpload" }); pu
routes.MapRoute("UploadLinks", "media/upload_links/{link}/{albumID}",
new { controller = "Media", action = "WebLinkUpload" });
public ActionResult WebLinkUpload(string link, string albumID){}
$('#btnUploadWebUpload').click(function () {
$.ajax({
type: "GET",
url: "/media/upload_links/" + encodeURIComponent($('#txtWebUrl').val().trim()) + "/" + currentAlbumID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
}
});
});
控制器操作:
routes.MapRoute("UploadLinks", "media/upload_links/{link}/{albumID}",
new { controller = "Media", action = "WebLinkUpload" });
public ActionResult WebLinkUpload(string link, string albumID){}
$('#btnUploadWebUpload').click(function () {
$.ajax({
type: "GET",
url: "/media/upload_links/" + encodeURIComponent($('#txtWebUrl').val().trim()) + "/" + currentAlbumID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
}
});
});
jQuery AJAX调用:
routes.MapRoute("UploadLinks", "media/upload_links/{link}/{albumID}",
new { controller = "Media", action = "WebLinkUpload" });
public ActionResult WebLinkUpload(string link, string albumID){}
$('#btnUploadWebUpload').click(function () {
$.ajax({
type: "GET",
url: "/media/upload_links/" + encodeURIComponent($('#txtWebUrl').val().trim()) + "/" + currentAlbumID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
}
});
});
url的路径部分不允许使用某些字符。下面是一篇斯科特·汉斯曼(Scott Hanselman)提供更多细节的文章。我建议您将
链接作为查询字符串参数传递,而不是作为路由的一部分传递:
routes.MapRoute(
"UploadLinks",
"media/upload_links/{albumID}",
new { controller = "Media", action = "WebLinkUpload" }
);
然后:
$('#btnUploadWebUpload').click(function () {
$.ajax({
type: 'GET',
url: '/media/upload_links/' + currentAlbumID,
data: { link: $('#txtWebUrl').val().trim() },
success: function (result) {
}
});
});
还要注意,我从AJAX调用中删除了contentType:'application/json'
,这是错误的。您没有发送任何JSON请求。这是一个GET请求。确保地图路由调用在默认值之前。如果没有,它将尝试使用上载链接操作调用媒体控制器。encodeURIComponent
必须用于编码查询字符串参数值,而不是路径的一部分。所以不,他没有编码。无论您如何编码,web服务器都不允许您在url中使用某些特殊字符。谢谢Darin,这真的很有帮助。