这个想法是这个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真的。请帮忙!
答案 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上的一些教程。看起来你错过了一些基本面。希望有所帮助!