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 网站说我无权查看目录或页面

如何向地理服务器上托管的 o​​penlayers 地图添加功能?

如何在实际服务器上托管使用 laravel 5 制作的网站?

如何将非 www 域重定向到 Azure 上托管的 asp.net mvc 中的 WWW 域?

是否可以在我自己的服务器上托管电报?

在闪亮服务器上托管 html 页面