0

如果我有这个 JavaScript 函数:

function fillMainStreetEvent(location) { // /AJAX Pages/Compute_Main_Street_Event.cshtml
    $.ajax({
        url: "/App_Code/ContentGenerator.cs/ContentGenerator.GenerateMainStreetEvents",
        async: false,
        type: "GET",
        dataType: "html",
        data: { page: location },
        success: function (response) {
            $("#MainStreetEvents").html(response);
        },
        error: function (jqXHR, textStatus, error) {
            alert("Oops! We're sorry, there has been an AJAX error. The server responded with (" + textStatus + ": " + error + ").");
        }
    });
}

我想在一个名为: 的外部文件中定位GenerateMainStreetEvents类的方法: ,我该怎么做?ContentGeneratorContentGenerator.cs

这是我在我的文件中针对单个方法的最新尝试,但是,由于猜测是开始编写语法正确代码的一种可怕方式,.cs因此我无法让它工作我并不感到惊讶。

在第一行的注释中,您可以看到我通常用来指向外部cshtml文件的字符串,它在功能上对我很有帮助,特别是因为我可以.cs从那里调用我的外部文件的方法。但是,我正在尝试减少文件之间的跳数并开始研究如何做到这一点,但空手而归。

此外:

/App_Code/ContentGenerator.cs/ContentGenerator.GenerateMainStreetEvents

我试过这个:

/App_Code/ContentGenerator.cs/ContentGenerator/GenerateMainStreetEvents

这个:

/App_Code/ContentGenerator.cs.ContentGenerator.GenerateMainStreetEvents

和这个:

/App_Code/ContentGenerator.cs/GenerateMainStreetEvents

考虑到我的环境,这些都不适合我。我能找到的关于如何执行此操作的唯一在线示例涉及 PHP、经典 ASP 或我未在 ASP.NET 中使用的其他一些语言。

这里的答案可能很简单,但由于我以前从未.cs使用 AJAX 定位外部文件,所以我完全没有猜测,研究也没有新的想法。

4

1 回答 1

0

因此,首先 - 任何 ASP.NET 应用程序中的 App_Code 目录都不应提供内容。这是为了保护自己免于在您的网站上意外暴露您的源代码 :) 要实现这一目标,您需要执行以下几个步骤:

  1. 创建一个名为“GenerateMainStreetEvents.cshtml”的新 cshtml 页面。
  2. 在该页面内,添加一个调用 GenerateMainStreetEvents 函数的剃刀块
  3. 获得 razor 中的对象列表后,需要将它们转换为 JSON。我建议使用 JSON.NET,它在 NuGet 上可用:http: //james.newtonking.com/projects/json-net.aspx
  4. 使用 Response.Write 和 Response.End 写出 JSON 并结束您的 HTTP 响应

这是一个非常好的示例: Retrieve JSON Array from jQuery Ajax call in asp.net pages

快乐编码!

于 2013-06-24T07:00:22.690 回答