C# 在asp.net中从codebehind执行javascript
我只需要在数据库中指定的特定日期从代码隐藏启动此脚本 我需要根据CMS系统中指定的日期将图像显示为fancybox 我将编写逻辑以在Default.aspx中显示图像或不显示图像,然后以某种方式将这段代码从Default.cs传递到MarterPage JavascriptC# 在asp.net中从codebehind执行javascript,c#,jquery,asp.net,fancybox,C#,Jquery,Asp.net,Fancybox,我只需要在数据库中指定的特定日期从代码隐藏启动此脚本 我需要根据CMS系统中指定的日期将图像显示为fancybox 我将编写逻辑以在Default.aspx中显示图像或不显示图像,然后以某种方式将这段代码从Default.cs传递到MarterPage Javascript$(window.load)(function()代码块 <Script> $(window).load(function () { I want this code to fire a
$(window.load)(function()
代码块
<Script>
$(window).load(function () {
I want this code to fire at a particular location of master page. I am not sure suppose here.
///HERE???
});
</Script>
我对这个有点迷茫
我只想在Default.aspc文件中执行逻辑检查,并仅在Default.aspx页面中将图像显示为花式方框。但如果我在Default.aspx文件中写入另一个“$(window.load(){}”);代码块,则花式方框无法正确显示
我怎样才能在没有任何问题的情况下实现这一点
更新:
我成功地完成了。这是基于Irina Bogomaz发布的解决方案
到目前为止,这是工作,我可以添加完整的逻辑代码后面稍后
$(window).load(function () {
if (window.showMessage) {
// alert(imgPath);
//logic to create fancybox
$("a.fancybox-messageboard").fancybox({
width: 600,
height: 440,
closeClick: true,
hideOnOverlayClick: true,
href: imgPath
}).trigger('click');
}
});
CODE BEHIND
protected override void OnPreRender(EventArgs e)
{
string imgMB = "'http://upload.wikimedia.org/wikipedia/commons/1/1a/Bachalpseeflowers.jpg'";
string sScript = "var showMessage = true; var imgPath=" + imgMB;
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", sScript, true);
}
也许你会用这种方式
首先将aspx页面设置为获取服务并使用web方法(_service.aspx)
然后在default.aspx页面中,使用jquery ajax调用该服务
$(function () {
$.ajax({
url: '../_service.aspx/binddata',
type: 'POST',
data: " {'yourDatabaseObject':" + JSON.stringify(Parameters) + "}",
datatype: 'html',
contentType: 'application/json; charset=utf-8',
success: function (data) {
$('a.fancybox-messageboard').fancybox({ width: 600, height: 440,closeClick: true, hideOnOverlayClick: true, href: 'http://upload.wikimedia.org/wikipedia/commons/1/1a/Bachalpseeflowers.jpg' }).trigger('click');;
},
error: function (request, status, err) {
// alert(status);
//alert(err);
}
});
});
试试这个:
string myscript = "$('a.fancybox-messageboard').fancybox({ width: 600, height: 440,closeClick: true, hideOnOverlayClick: true, href: 'http://upload.wikimedia.org/wikipedia/commons/1/1a/Bachalpseeflowers.jpg' }).trigger('click');"
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), Guid.NewGuid().ToString(), "<script>" + myscript + "</script>", false);
string myscript=“$('a.fancybox-messageboard').fancybox({width:600,height:440,closeClick:true,hideonOverlyclick:true,href:'http://upload.wikimedia.org/wikipedia/commons/1/1a/Bachalpseeflowers.jpg'})。触发器('单击')
ScriptManager.RegisterClientScriptBlock(this,this.GetType(),Guid.NewGuid().ToString(),“+myscript+”,false);
您可以通过以下方式实现:
母版页:
<script type="text/javascript">
$(window).load(function () {
if (window.isFancybox) {
//logic to create fancybox
}
});
</script>
@KnowledgeSeeker您是否检查了浏览器控制台是否有任何可能出现的错误?可能将您的js脚本包装在文档中。ready Function可提供帮助。它在参数列表showMessage之后提供语法错误“SyntaxError:missing”)(无论在window load或jquery.load中,还是在任何我仍然得到错误ReferenceError:showMessage未定义的地方,我在何处定义我的函数都无关紧要。
@KnowledgeSeeker可能与脚本加载顺序和脚本执行有关。您是否尝试使用ScriptManager.RegisterStartupScript signanture注册脚本代替RegisterClientScriptBlock?抱歉,我想不出任何其他方法来帮助您
string myscript = "$('a.fancybox-messageboard').fancybox({ width: 600, height: 440,closeClick: true, hideOnOverlayClick: true, href: 'http://upload.wikimedia.org/wikipedia/commons/1/1a/Bachalpseeflowers.jpg' }).trigger('click');"
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), Guid.NewGuid().ToString(), "<script>" + myscript + "</script>", false);
<script type="text/javascript">
$(window).load(function () {
if (window.isFancybox) {
//logic to create fancybox
}
});
</script>
protected void Page_Load(object sender, EventArgs e)
{
var fanceBoxDate = new DateTime(2013, 11, 20); //get date from CMS system
if (DateTime.Today == fanceBoxDate)
{
ScriptManager.RegisterClientScriptBlock(this, GetType(), "fancyBox", "var isFancybox = true", true);
}
}