从asp.net的codebehind执行javascript

时间:2013-11-20 08:48:44

标签: 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 at a particular location of master page. I am not sure suppose here.
///HERE???

    });
    </Script>

我想将下面的脚本作为值传递,以便js执行///HERE???部分代码

Page.ClientScript.RegisterStartupScript(this.GetType(), "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');", true);

我有点失落......

我很想在Default.aspc文件中进行逻辑检查,并仅在default.aspx页面中将图像显示为精美框。但是我在default.aspx文件中的'$(window).load(function(){}); code block is in MasterPage file if i write another ' $(window).load(function () { });然后没有正确显示。

如何在没有任何问题的情况下实现这一目标

更新

我设法将其关闭..这是基于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);
    }

3 个答案:

答案 0 :(得分:2)

试试这个:

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);

答案 1 :(得分:1)

您可以通过以下方式实现此目的:

母版页:

<script type="text/javascript">
     $(window).load(function () {
         if (window.isFancybox) {
             //logic to create fancybox
         }
     });
</script>

Default.aspx.cs:

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);    
        }
    }

答案 2 :(得分:0)

可能会用这种方式

首先将aspx页面设为获取服务并使用web方法(_service.aspx)

    public partial class _service : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string binddata(yourObject yourDatabaseObject)//tbl_BI_mant[]
        {
            //connect to Database 
            //and add your Date filter
          return  Data.getpictureWithDateFilter(yourDatabaseObject.datefilter) 
        }
}

然后在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);
                    }
                });
  });