为什么使用AsyncFileUpload的ModalPopupExtender中的按钮的CommandArgument不起作用?

时间:2018-04-08 01:33:50

标签: c# asp.net forms button

我已经尝试了一段时间来找出按钮的CommandName不起作用的原因,事实上我总是在输入onCommand事件时将其抛空,甚至在点击相同的按钮时尽管放了具有值的属性,奇怪的是我不能修改属性并且第一次将属性CommandName正常工作没有问题,但是我不可能修改它的值。

首先,我有一个ModalPopupExtender和一个Panel,它有一系列TextBox和一个带有一系列按钮的AsyncFileUpload,有必要记住我正在使用一个ASPX表格,一个MasterPage的儿子:< / p>

<cc1:ModalPopupExtender ID="mpEditUser" runat="server" PopupControlID="pnEditUser" TargetControlID="lbShowEditUser"
    CancelControlID="lbCloseEditUser" BackgroundCssClass="modalBackground">
    <Animations>
        <OnShown>
            <FadeIn Duration="0.40" Fps="30" />
        </OnShown>
        <OnHiding>
            <FadeOut Duration="0.40" Fps="30" />
        </OnHiding>
    </Animations>
</cc1:ModalPopupExtender>

<asp:Label ID="lbShowEditUser" runat="server" Text="" style="display:none;"></asp:Label>
<asp:Label ID="lbCloseEditUser" runat="server" Text="" style="display:none;"></asp:Label>  

<asp:Panel ID="pnEditUser" runat="server" ClientIDMode="Static" tabindex="-1" role="dialog">
    <div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <h4 class="modal-title">
                Modify User
            </h4>
        </div>
        <div class="modal-body">
            <asp:UpdatePanel ID="upEditUser" runat="server">
                <ContentTemplate>

                <p>Message</p>
                <div class="form-group">
                    <label for="txtEditUser">Code</label>
                    <asp:TextBox ID="txtEditUser" runat="server" CssClass="form-control" ClientIDMode="Static" Enabled="false"></asp:TextBox>
                </div>
                <div class="form-group">
                    <label for="txtEditNameUser">Name</label>
                    <asp:TextBox ID="txtEditNameUser" runat="server" CssClass="form-control" ClientIDMode="Static" Enabled="false"></asp:TextBox>
                </div>

                <div class="form-group">
                    <asp:UpdatePanel ID="upX" runat="server">
                        <ContentTemplate>
                        <label class="">CV User</label>
                        <div class="input-group">
                            <label class="input-group-btn">
                                <span class="btn btn-primary">
                                    Upload<cc1:AsyncFileUpload ID="fuCVUser" runat="server" class="form-control" style="display:none;" ClientIDMode="Static" OnUploadedComplete="fuCVUser_UploadedComplete"  />
                                </span>
                            </label>
                            <input type="text" class="form-control" readonly disabled>
                        </div>

                        <span class="help-block">
                            <div class="form-inline">
                                <div class="form-group">
                                    <asp:Button ID="btnDownloadCVUser" runat="server" CssClass="btn btn-default" ClientIDMode="Static" CommandArgument="Test" OnCommand="btnDownloadCVUser_Command" Text="Download" />
                                </div>
                            </div>
                        </span>
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </div>

                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
        <div class="modal-footer">
            <asp:UpdatePanel ID="upControlsEditUser" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btnCloseEditUser" runat="server" AutoPostBack="true" CausesValidation="true" Text="Close" class="btn btn-default" data-dismiss="modal" OnClick="btnCloseEditUser_Click" aria-hidden="true" />
                    <asp:Button ID="btnEditParticipant" runat="server" AutoPostBack="true" CausesValidation="true" Text="Update User" class="btn btn-primary" data-dismiss="modal" OnClick="btnEditUser_Click" aria-hidden="true" />
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
    </div>
    </div>
</asp:Panel> 

事件onCommand:

protected void btnDownloadCVUser_Command(object sender, CommandEventArgs e)
{
   string x = e.CommandArgument; <- (this value is always "")
}

为了毫无疑问,我决定把&#34; btnDownloadCVUser&#34;控制在小组之外

............
         </asp:UpdatePanel>
        </div>
    </div>
    </div>
</asp:Panel>
<asp:Button ID="btnDownloadCVUser" runat="server" CssClass="btn btn-default" ClientIDMode="Static" CommandArgument="Test" OnCommand="btnDownloadCVUser_Command" Text="Download" /> 

这在CommandArgument上成功运行,也就是说,我可以在标签上看到它的指定值,并设法修改它的值。

我尝试将UpdatePanel与AsyncFileUpload放在一起,以便它包含&#34; from-group&#34;有触发器,但我一直提出同样的问题。这很奇怪,因为我有一个完全相同的按钮,但它不在MomalPopupExtender中

为什么会这样? ModalPopupExtender或AsyncFileUpload是否与问题有关? 是&#34; form-group&#34;的级别?和它有什么关系?

到目前为止,我唯一的救生员是使用ViewState,但我仍然对导致我的问题的原因很感兴趣:(

更新01: 我注意到原因似乎是我加载文件的方法(AsyncFileUpload),显然如果我尝试为此更改变量,事实证明它就好像我没有,但它允许我上传文件没有问题。有没有解决方案?

    private int a = 0;

    protected void fuCVUser_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
    {
       a = 10; < - The value changes to '10' but if I enter the event of another button of the ModalPopupExtender the value is still '0'
    }

1 个答案:

答案 0 :(得分:0)

看到这个问题之后:

<强> Persisting variable after AsyncFileUpload call to OnUploadedComplete

我得出结论,使用静态全局变量或Session足够了。)

显然,AsyncFileUpload方法适用于静态变量,这可以证明CommandArgument的问题