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

标签 asp.net css ascx

这个想法是,这个 div 包含来自客户的报价,该报价是通过随机获取函数从服务器检索的,每隔几秒就会运行一个 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 或代码隐藏的东西。请帮忙!

最佳答案

这些是您需要使用 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) 创建一个将对您的网络方法执行 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;

就是这样,应该可以。

关于asp.net - 每次加载 DIV 时执行代码隐藏方法(ASP、ascx、ascx.cs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18004072/

相关文章:

.net - 在不同的 Web 应用程序之间共享 ASCX 控件

c# - 字符串函数(正则表达式?)从 url 字符串中删除查询字符串对

javascript - 使用 Jquery AJAX 和 ASPX 表单的 POST 参数

css - 查找从 SASS 编译的 CSS 文件的源代码

html - 背景图片显示不正确

带有圆形箭头的 CSS 对话泡泡

调用服务器端方法的 Javascript 函数不起作用

javascript - Umbraco 添加来自页面 @nodename 的链接作为表单上的文本输入值

mysql - 从自定义 SQL 选择查询中删除重复行

c# - 使用 LINQ 仅更新一列值