令人不舒服的服务器和客户端代码混合 - 我如何实现这两个要求

时间:2013-02-11 16:55:54

标签: jquery asp.net

我正在使用转发器控件 - 转发器上的每个项目都会获得一个图像&一个链接按钮。

从功能方面来说,单击链接按钮会触发一个itemcommand(提供一个命令参数)。然后,此项目命令运行一些服务器端代码,以将与第一个转发器相关的数据填充为另一个转发器作为子列表。

从UI方面来看,转发器上的每个项目都将其图像不透明度向下缩小,但点击的链接按钮图像除外。

这是我遇到麻烦的地方:

$('.showSubCats').click(function (e) {
    e.preventDefault();
                $(".myImages").animate({ opacity: 0.2 }, 300);
                $(this).parent().children('img').animate({ opacity: 1.0 }, 300);

});

这显示了当前点击的图像并且非常出色地隐藏了其余部分。但是我必须引入e.preventdefault(),因为itemcommand上的回发显然已经撤消了jquery刚刚对图像所做的工作。

通过引入.preventdefault(),我现在已经丢失了itemcommand,因为它被阻止了。哎呀。

以为我有过:

  • 我尝试使用registerstartupscript从代码后面运行一些jquery,但它在DOM完成之前运行,我的图像恢复到1.0不透明度
  • 我在我的jquery中尝试了一个ajax调用,以这种方式运行服务器端脚本 - 但我无法在其上获得可行的解决方案
  • 我尝试添加{return:true};

我是用这个想法鞭打死马还是我还能尝试别的什么?

这是我的项目命令代码:

   protected void showSubCat_itemCommand(object sender, CommandEventArgs e)
    {

            using (var db = new ps.data.Entities1())
            {

                int id = int.Parse(e.CommandArgument.ToString());
                var subCats = (from sc in db.vwSubCategories
                               where sc.primaryCategoryID == id
                               select sc).ToList();

                SubCategories.DataSource = subCats;
                SubCategories.DataBind();
                currentCatChosen.Value = id.ToString();
            }
     }

1 个答案:

答案 0 :(得分:0)

我尝试使用registerstartupscript从代码后面运行一些jquery,但它在DOM完成之前运行,我的图像恢复到1.0不透明度

IMO,这是正确的选择。至于图像还原......您是否尝试将代码包装在$(document).ready()