MVC 5 + $Post() 功能在服务器上托管后不起作用
Posted
技术标签:
【中文标题】MVC 5 + $Post() 功能在服务器上托管后不起作用【英文标题】:MVC 5 + $Post() function not working after hosted on server 【发布时间】:2015-01-29 09:43:22 【问题描述】:我在 MVC5 中开发了一个应用程序。 Onclick 下面代码视图上的链接被调用 -
// Code in View File
$.post('../ControllerName/FunctionName', //this is your url
id: image,
, function (data)
alert("Successfully published");
).error(function ()
alert("Failed to publish");
);
//Code in Controller
[HttpPost]
public void ISPPDF(string id)
我面临的问题是 ISPPDF() 函数在我通过 Visual Studio 运行时被调用。但是在我将应用程序托管在服务器上之后,它似乎没有调用该函数..
我觉得我指定的路径有问题 -
我也尝试通过以下方式指定路径,但没有成功!
/ControllerName/FunctionName
ControllerName/FunctionName
任何帮助将不胜感激。
谢谢,
【问题讨论】:
在您的本地计算机上安装 IIS 并尝试通过它运行应用程序 - 将允许您在本地复制问题。注意到 IIS 的 VS 配置与“真正的”IIS 不同。 你应该使用Url.Action
来生成链接。
您在浏览器中遇到什么错误并使用'@Url.Action("ActionName", "ControllerName")'
"../ControllerName/FunctionName" 这个 URL 可能无效。
另外,查看浏览器工具的控制台(或者更好的是,网络选项卡),看看它显示了什么
【参考方案1】:
你不应该在 MVC 中硬编码 URL。
改为使用@Url.Action
。
$.post('@Url.Action("FunctionName", "ControllerName")', //this is your url
如果你需要发送参数,你可以这样做:
$.post('@Url.Action("FunctionName", "ControllerName", new id = Model.ID )', //this is your url
我推荐这个有两个重要原因:
1. 错误输入 URL 的机会很大。这个问题证明了这一点,OP 输入错误的 URL。
2.Url.Action
考虑你的路线。如果您的路线发生变化,Url.Action
将知道如何构建正确的 URL。这样您就不必通过多个视图来更改所有硬编码的值。
【讨论】:
【参考方案2】:试试这个,因为你的 post 方法在视图文件中
$.post('../FunctionName', id: image,, function (data) alert("发布成功");).error(function () alert("发布失败" ); );
【讨论】:
虽然此解决方案可能会针对这种特定情况完成工作,但强烈建议不要对 URL 值进行硬编码。而是使用Url.Action
,正如我在回答中所展示的那样。以上是关于MVC 5 + $Post() 功能在服务器上托管后不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Azure 上托管的 MVC 4 网站说我无权查看目录或页面
如何向地理服务器上托管的 openlayers 地图添加功能?
如何在实际服务器上托管使用 laravel 5 制作的网站?