3

有谁知道是否可以使用 jquery/ajax 在同一解决方案中的另一个项目中调用 ac#(或任何其他 .net)函数?

假设解决方案的名称是 ExampleSolution ,我调用目标函数的项目名称是 Project.Source ,目标项目的名称是 Project.Target ,目标函数的名称是TargetFunction()

我尝试过.js file以下Project.Source

    $.ajax({
            url: '/ExampleSolution/Project.Target/TargetFunction',            
            type: 'get',
            success: function (data) {
                $(document.body).append(data);
            }
   });

然后我以多种方式修改了 url-line,但从未成功。

你有什么建议吗?

4

3 回答 3

1

谢谢大家的快速回答。

我找到了解决这个问题的方法,我想分享它,以防将来有人遇到同样的问题。

在调用 $.ajax 函数之前的 .js 文件中,我在 window.location 的帮助下创建了一个变量,该变量指向正在运行的目标项目的目标函数的 url,并在 ajax 函数中使用该变量。所以你不要指向另一个项目。您指向正在运行的项目的 url。

就像听起来一样容易。

以下是解决方案:

    var url = window.location = 'http://localhost:13105/TargetFunction';

    $.ajax({
        url: url,
        type: 'get',
        success: function (data) {
            $(document.body).append(data);
        }
    });
});
于 2013-01-22T16:54:48.470 回答
0

您只能调用 Code Behind 中的函数,因为它们是由 Web 服务器注册的。

如果您希望在 Code Behind 之外可以访问某个函数,则需要将其注册为 ASMX 或 WCF 服务。

请参阅创建和使用您的第一个 WCF 服务以设置 WCF 服务。

设置并运行后,您可以使用 Ajax 来调用方法,就像在后面的代码中一样。

$.ajax({
        //Path to WCF Server and Target Method
        url: "http://localhost:PORT/wcfsvc/FooService.svc/Foo",
        type: 'get',
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            $(document.body).append(data);
        }
});

另请参阅:将 jQuery 中的 WCF 用作 JSON

于 2013-01-22T14:18:54.907 回答
0

简短的回答是“不,这是不可能的”。前端代码(如 jQuery 和 AJAX)在客户端机器上运行,但 C# 函数是后端并在服务器上运行。他们之间没有直接的联系。


更长的答案是“不是直接的,但有办法做类似的事情。” 您最简单的选择是使用 AJAX 发布到服务器上的另一个控制器/操作,然后处理响应。这与您正在做的事情很接近,但您稍微偏离了一点。而不是 url 是一个函数,url 必须是您网站上的实际 url。以/Functions/CallTargetFunction示例为例,您将创建一个如下所示的控制器:

public class FunctionsController : Controller
{
    public ActionResult CallTargetFunction()
    {
        return Content(TargetFunction());
    }
}

请注意,这样做意味着访问的任何人http://yoursite.com/Functions/CallTargetFunction都将获得该函数的结果。

于 2013-01-22T14:33:26.747 回答