1

这个想法是,这个 div 包含来自客户的报价,该报价是通过 get random 函数从服务器检索的,并且每隔几秒钟运行一个 jQuery 会淡出这个报价并带来另一个报价。

这是我的 .ascx 中的 Div 代码:

< div class="testimonial" ID="Fader" onload="runTestimonial">

<q>"<asp:Literal runat="server" ID="Quote"></asp:Literal>"</q>

</div>

后面的代码(.ascx.cs):

protected void runTestimonial(object sender, EventArgs e)
{ --lots 'o code--

Partnership partnership = Partnership.GetRandomTestimonial(cmPage.CMPageId);
            if (partnership != null)
            {
                Quote.Text = partnership.Testimonial;
                Visible = true;
            }
}

我正在使用这个 jQuery 代码:

setInterval(
    (function () {
        $('#Fader').fadeOut('slow', function () {
            setTimeout(function () { $('#Fader').load().fadeIn('slow'); }, 300);
        });
    })
    , (200))

jquery应该没问题。它链接到 Div 的 Fader ID 并进行淡入淡出和加载。

最初,div 使用相同结构的 Page_Load 方法生成了报价,这很有效。现在的变化是我需要在需要时调用它,而不是在 Page_Load 上,而是在 jQuery 刷新上。

到目前为止,我让 div 刷新进出,但它是空白的(如果我将其恢复为 on Page_Load 方法,则相同的引号会进出)。它没有到达 ASP 行或没有执行它。我根本无法让 runTestimonial 像 Page_Load 那样工作,可能是因为我不知道如何调用它。

我真的不知道如何做 C#、jQuery ASP 或代码背后的东西。请帮忙!

4

2 回答 2

1

这些是您需要使用 jQuery 和 WebMethod 执行的步骤:

1)您将runTestimonial()函数更改为WebMethod将返回字符串(随机推荐)的函数。所以你的函数的签名看起来像这样:

[WebMethod]
public static string runTestimonial()
{
    return randomTestimonial; //include your code
}

2) 在文件的头部添加 jQuery 库。

<script src="http://code.jquery.com/jquery-latest.js"></script>

3) 创建一个函数,该函数将对您的 webmethod 进行 ajax 调用。

function getTestimonial()
{
   $.ajax({
     type: "POST",
     url: "Default.aspx/runTestimonial",
     data: "{}",
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function(msg) {
       $("#Fader").html(msg); //msg contains the response from the server, this appends it to the div
     }
   });
}

4) 标记中的 div 将不是服务器控件,因此请删除onload. 所以它看起来像这样:

<div class="testimonial" ID="Fader"></div>

5)我们差不多完成了,只要确保getTestimonial()在你的 setInterval 中调用你的函数。

[WebMethod]属性位于System.Web.Services库中,因此请确保将其包含在页面顶部:

using System.Web.Services;

就是这样,这应该工作。

于 2013-08-01T21:41:21.437 回答
0

简单来说,C#是服务器端,所以runTestimonial客户端浏览器上不存在该方法。您需要创建一个 javascript 函数,该函数使用 jQuery 通过 ajax 请求调用服务器。我建议查看一些关于 jQuery/ajax/ASP.Net 的教程。您似乎缺少一些基础知识。希望有帮助!

于 2013-08-01T20:47:44.290 回答