这个想法是,这个 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/