【问题标题】:How to call WebMatrix Helper function from jQuery AJAX?如何从 jQuery AJAX 调用 WebMatrix Helper 函数?
【发布时间】:2012-07-13 10:59:11
【问题描述】:

我的 App_Code 文件夹中有一个帮助方法,它返回一些要在页面上显示的 html。如何执行 jQuery/AJAX 请求来调用该方法(将 int 作为参数传递)并返回 HTML,以便在页面上显示它?

我到处寻找,完全不知道从哪里开始。如果有任何帮助,我将不胜感激。

【问题讨论】:

  • 您不能这样做,因为简单地说:c# 代码发生在服务器端,而 JavaScript 发生在客户端。或者这不是你的问题?
  • @Silvermind 这就是我之前的想法。但是,我遇到了一篇文章,它向您展示(并且有效)如何从 jQuery/AJAX 调用 WebMethod,该 WebMethod 位于一个返回值的 aspx 页面内。但是,我的情况只是略有不同。在我的例子中,我需要调用 App_Code/myHelper.cs 文件中的方法,而不是调用 ASPX 页面中的方法。
  • 引用:encosia.com/…
  • 我花了数周时间试图找到适合我的工作方式。到目前为止没有运气。但是,我想做的只是将一些东西 AJAX 放到我的页面上。我只需要能够根据来自数据库的一些结果(ajax,不刷新页面)呈现一些 HTML - 我不在乎它是否不是帮助文件,只要它是 ajax

标签: c# javascript jquery asp.net webmatrix


【解决方案1】:

添加另一个使用 Helper 呈现 HTML 的页面,并通过 AJAX 调用提供值。例如,您可能有一个名为 RenderHelper.cshtml 的页面:

@{
    var i = Request["id"].AsInt();
}

@Helpers.MyMethod(i)

然后在你的调用页面中,使用 jQuery 加载函数:

$('#elementToFill').load('RenderHelper/?id=' + some_int);

【讨论】:

  • 您能详细说明一下吗? Add another page 让我有点困惑(抱歉)- 我想,-对不起,我真的很困惑,但我很确定我明白了。
  • 这不起作用;你有什么资源/文档可以看吗?
  • “不工作”是什么意思?我提供的代码只是说明性的。它并不意味着按原样工作。您需要将“myMethod”更改为您的辅助方法的名称,您需要将“#elementToFill”更改为要在其中显示 HTML 的元素的 id,最后,您需要将“some_int”更改为表示您的助手期望的整数值。当我不知道你不知道什么时,很难为你指出合适的资源。
  • 我刚刚注意到您的帮助文件名为 myHelper.cs。这不是网页 (WebMatrix) 帮助文件。看到这个:mikesdotnetting.com/Article/173/…。您使用的是 ASP.NET 网页还是 Web 窗体?
  • 正确,.cs 不是帮助文件,它只是我的问题中的一个错字;我的实际帮助文件是 .cshtml。我设法让它工作,尽管它一直显示 layout.cshtml 页面的页眉和页脚。有没有办法只为这个页面禁用这些东西?
【解决方案2】:

您可以使用网络服务。

在 Web 服务中调用您的类方法并使用 jQuery/Ajax 调用 Web 服务。

例如。

类文件

Class MyClass
{
public static string GetName(string Name)
{
return "My name is "+Name;
}
}

网络服务

[WebService(Namespace = "WebService")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class YourNameIs : System.Web.Services.WebService
    {
        [WebMethod, ScriptMethod]
        public string GetName(string Name)
        {
            return MyClass.GetName(Name);
        }

    }

jQuery

$.ajax(
    {
        Type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "WebService.asmx/GetName",
        data: '{Name: "' + name + '"}',
        success: function (msg) {
            alert(msg.d); //set msg to any div elemts InnerHTML like $("#yourDivElement").html(msg.d);
        }
    });

我没有测试代码,希望它能给一个想法。

【讨论】:

  • 感谢您的用户,非常感谢。我从来没有能够让任何网络服务与我拥有的这个特定的网络主机一起工作,但它仍然是不错的工作,我将来可能会将它用于另一个网站。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
相关资源
最近更新 更多