Javascript 如何使用ajax在另一个库中调用cs函数

Javascript 如何使用ajax在另一个库中调用cs函数,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,我正在使用模型视图/控制器,因此我尝试将文件保存在不同的文件夹中,如下所示 我正试图在像这样的aspx中使用ajax从Boleta项目调用业务文件夹中的c#类 $.ajax({ type: "POST", url: "Business/SaveExpenses.cs/save", data: JSON.stringify({ questions: questions}), contentType: "application/json; charset=utf-

我正在使用模型视图/控制器,因此我尝试将文件保存在不同的文件夹中,如下所示

我正试图在像这样的aspx中使用ajax从Boleta项目调用业务文件夹中的c#类

$.ajax({
    type: "POST",
    url: "Business/SaveExpenses.cs/save",
    data:  JSON.stringify({ questions: questions}),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        alert(data);
        console.log(data);
    },
    error: function (data) {
        alert("fail");
    }
});
namespace Business
{
    public class SaveExpenses
    {
        public string save(string foo)
        {
            string ret= "something";
            return ret;
        }
    }
}
我试图调用的c#文件如下所示

$.ajax({
    type: "POST",
    url: "Business/SaveExpenses.cs/save",
    data:  JSON.stringify({ questions: questions}),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        alert(data);
        console.log(data);
    },
    error: function (data) {
        alert("fail");
    }
});
namespace Business
{
    public class SaveExpenses
    {
        public string save(string foo)
        {
            string ret= "something";
            return ret;
        }
    }
}
当页面被执行并通过ajax函数时,它抛出一个错误404NotFound。 现在我的问题是,如何在asp.net中导航文件夹?或者调用函数的正确方式。 我来自一个php环境,我对asp.net非常陌生,因此我很乐意接受任何建议

此url错误:

url:“Business/SaveExpenses.cs/save”

URL应该引用实际的路由。例如:

public class BusinessController : Controller
{
    // GET
    public ActionResult Index()
    {
        return View();
    }


    public string Save()
    {
        string ret= "something";
        return ret;
    }
然后您的URL将是
Business/Save
(取决于RouteConfig等注意事项)。

查看。基本上,您的ajax调用将命中一个http端点,您将在其中执行服务器端逻辑

以下只是一个通用模式-您需要实现更多的功能

$.ajax({
  type: 'POST',
  url: '/Business/Expenses', // http route
  // [...]
});


在Boleta项目中添加业务名称空间

using Business;
然后在控制器中创建一个动作到Boleta项目中

public JsonResult Save(param)
{
SaveExpenses se = new SaveExpenses();
    var result=  se.Save(param);
    return json(result);
}

并通过ajax调用save()action

这不是它的工作方式。您不能仅仅创建一个类和一个方法,然后期望它公开。你需要选择一些可以路由到的东西,一些暴露的端点。通常,这样做的方式是让一个控制器坐在您的逻辑前面。您为控制器配置路由,以便请求命中操作方法,然后操作方法将该请求传递给业务逻辑中的其他类。Web API还将负责序列化、反序列化您传递的对象和返回的值。您假设他在这里有一个控制器。@mason问题的第一行:“我正在使用模型视图/控制器”,这向我表明他相信他正在使用ASP.NET MVC。但是
SaveExpenses
不是一个控制器,甚至似乎不在MVC项目中。你走的路是对的,我只想告诉你如何从控制器调用
SaveExpenses
中的功能。我的意思是,他可以通过很多方式从另一个文件调用他的函数(静态方法,或者创建一个对象的实例并从那里调用,SaveExpenses.save(“foo”),等等)。我想我的答案是,他应该首先把这种逻辑放在他的控制器中。不,把逻辑放在控制器中与你想做的相反。控制器应该是轻量级的,在实际逻辑之前是一个简单的外观。控制器应该处理从web获取输入并获得响应。实际逻辑应该在别处处理。这避免了与控制器框架的紧密耦合,并使其更容易支持出现的新范例。要实现这一点,我只需要将ExpenseController控制器添加到Boleta项目?不,您需要创建一个web API项目,并遵循我提供的文档。这是一个需要努力理解和应用的大课题。我很惊讶你接受了这个答案,甚至没有把它应用到你的处境中。。。