MVC 5 + $ Post()函数在托管服务器后无法正常工作

MVC*_*ate 2 c# asp.net asp.net-mvc jquery asp.net-mvc-5

我在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)
    {}
Run Code Online (Sandbox Code Playgroud)

我面临的问题是ISPPDF()函数在我通过visual studio运行时被调用.但是,在我在服务器上托管我的应用程序后,它似乎没有调用该函数..

我觉得我指定的路径存在一些问题 -

我也尝试过以下方式指定路径,但没有运气!

 /ControllerName/FunctionName
 ControllerName/FunctionName
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

谢谢,

Mih*_*scu 8

你永远不应该在MVC中硬编码URL.

而是使用@Url.Action.

$.post('@Url.Action("FunctionName", "ControllerName")',  //this is your url
Run Code Online (Sandbox Code Playgroud)

如果你需要发送参数,你可以这样做:

$.post('@Url.Action("FunctionName", "ControllerName", new { id = Model.ID })',  //this is your url
Run Code Online (Sandbox Code Playgroud)


我推荐这个有两个重要原因:

1.错误输入URL的可能性很大.这个问题证明了这一点,OP错误地输入了URL.
2. Url.Action考虑到你的路线.如果您的路线发生变化,Url.Action将知道如何构建正确的网址.这样,您就不必通过多个视图来更改所有硬编码值.