我已经尝试了一段时间来找出按钮的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'
}
答案 0 :(得分:0)
看到这个问题之后:
<强> Persisting variable after AsyncFileUpload call to OnUploadedComplete 强>
我得出结论,使用静态全局变量或Session足够了。)
显然,AsyncFileUpload方法适用于静态变量,这可以证明CommandArgument的问题