从JavaScript同步服务器端控制

3
我有以下情景:
我有两个面板,带有切换它们的链接,这些链接不会回传页面,它们调用一些JavaScript代码来淡入和淡出面板,改变它们的可见性。
在任何一个面板中,我都有一个按钮,它回传页面。问题是,在我淡入第二个面板后,我的ViewState无效,我的回传失败了。
是否有一种方法可以通过JavaScript同步这两个面板的可见性,使我的ViewState有效?还是我必须回传才能让它起作用?如果是这样,我可以在不让页面闪烁的情况下回传并美观地淡化面板吗?
编辑:这是我拥有的某些代码,很明显我有一堆控件在divs中。
<div id="step_one" class="lt-step-1">
    <asp:Button Text="Entrar" ID="btnPost1" OnClick="btnPost1_Click" ValidationGroup="Step1Val" CssClass="btn btn-primary lt-width-5" runat="server" />
    <a href="#" id="link_Step_Two"><span class="icon-repeat"></span>Step Two</a>
</div>
<div id="step_two" class="lt-step-2 hide">
    <asp:Button Text="Confirmar" ID="btnPost2" OnClick="btnPost2_Click" ValidationGroup="Step2Val" CssClass="btn btn-primary lt-width-5" runat="server" />
    <button type="button" id="btn_cancel_step_two" class="btn">Cancelar</button>
</div>

<script>
    require(['jquery', 'bootstrap'], function ($) {

        'use strict';

        var $stepOne = $('#step_one'),
            $stepTwo = $('#step_two'),
            $allSteps = $('[id^="step_"]'),
            $link_Step_Two = $('#link_Step_Two'),
            $btnCancelStepTwo = $('#btn_cancel_step_two'),


        $link_Step_Two.on('click', function () {
            $allSteps.hide();
            $stepTwo.fadeIn();
        });

        $btnCancelStepTwo.on('click', function () {
            $allSteps.hide();
            $stepOne.fadeIn();
        });

    });
</script>

你具体遇到了什么异常?能否让我们看一下代码? - emd
无效的ViewState yadayada,我将在此尝试编辑一些代码。 - Tejo
将您的服务器控件更改为HTML控件或使用UpdatePanel。 - Carlos Cocom
尝试在步骤div上放置runat = server。 - Morgan T.
好的,它部分地起作用了,将其放在UpdatePanel中解决了异常问题,但是当我点击btnPost2时,我必须再次显示Step1,并且我显示正确,但是我的link_Step_Two停止工作了。 - Tejo
显示剩余3条评论
1个回答

1

抱歉,我还没有足够的积分来回复Gnani的评论。如果只是失去了jquery事件,可以使用jquery delegate function针对表单元素。Delegate会自动钩住你的选择器中的事件,即使是未来出现的元素,例如当MS Ajax重新创建你的链接时。我经常使用这个技巧。类似于:

$("form").delegate('#link_Step_Two', 'click', function() {
  // Your code.
});

$("form").delegate('#btn_cancel_step_two', 'click', function() {
  // Your code.
});

谢谢,Michael。我现在放弃了,但尽快会尝试你的解决方案 :) - Tejo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接