Javascript 如何使用ajax在另一个库中调用cs函数
我正在使用模型视图/控制器,因此我尝试将文件保存在不同的文件夹中,如下所示 我正试图在像这样的aspx中使用ajax从Boleta项目调用业务文件夹中的c#类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-
$.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项目,并遵循我提供的文档。这是一个需要努力理解和应用的大课题。我很惊讶你接受了这个答案,甚至没有把它应用到你的处境中。。。