每次加载DIV时执行代码隐藏方法(ASP,ascx,ascx.cs)

时间:2013-08-01 20:39:14

标签: asp.net css ascx

这个想法是这个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的推子ID并进行淡入淡出和加载。

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

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

我不知道如何做C#,jQuery ASP或代码behinding真的。请帮忙!

2 个答案:

答案 0 :(得分: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)我们差不多完成了,只需确保在你的setInterval中调用你的getTestimonial()函数。

[WebMethod]库中有System.Web.Services属性,因此请务必将其包含在页面顶部:

using System.Web.Services;

这就是全部,这应该有效。

答案 1 :(得分:0)

简单地说,C#是服务器端,因此客户端浏览器上不存在方法runTestimonial。您需要创建一个javascript函数,该函数使用jQuery通过ajax请求调用服务器。我建议查看jQuery / ajax / ASP.Net上的一些教程。看起来你错过了一些基本面。希望有所帮助!