使用jquery/ajax调用同一解决方案中另一个项目中的c#(或任何其他.net)函数



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

假设解决方案的名称是exampleesolution,我从中调用目标函数的项目的名称是project。源,目标项目的名称为project。目标,目标函数名称为TargetFunction()

我已经尝试在Project.Source中遵循.js file:

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

然后我用几种方法修改了url行,但从未成功。

你有什么建议吗?

谢谢大家这么快的回答。

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

在.js文件中,在我调用$。ajax函数我创建了一个变量与窗口的帮助。将url指向正在运行的目标项目的target函数的位置,并在ajax函数中使用该变量。所以你不会指向另一个项目。您指向正在运行的项目的url。

听起来很简单。

解如下:

    var url = window.location = 'http://localhost:13105/TargetFunction';
    $.ajax({
        url: url,
        type: 'get',
        success: function (data) {
            $(document.body).append(data);
        }
    });
});

你只能在代码后面调用函数,因为它们已经被web服务器注册了。

如果你想让一个函数可以在代码之外访问,它需要注册为ASMX或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);
        }
});

参见:以JSON形式从jQuery中消费WCF

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


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

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

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

相关内容

  • 没有找到相关文章

最新更新