为什么Gridcom的Rowcommand事件没有被解雇?

时间:2017-06-09 06:03:29

标签: c# asp.net iis c#-4.0 webforms

我面临一种奇怪的问题。

问题:

当我点击网格视图中的链接按钮时,在 localhost 上部署时,网格视图的 RowCommand 事件被解雇但是不是在 IIS 即客户端系统上部署时。我也在网格视图中尝试了一个链接按钮,但也没有被解雇。

解决方案:临时

当我在.aspx页面顶部禁用 ValidateRequest 时。 工作

我该怎么办? 那么可能的解决方案是什么呢?我用Google搜索了,但没有任何好处。

代码:

            <asp:GridView ID="gvAppliedWorks" runat="server" OnRowCommand="gvAppliedWorks_RowCommand" AutoGenerateColumns="false" DataKeyNames="AppliedWorkID, ContractorID" EmptyDataText="No Data Found"
                CssClass="table table-responsive table-bordered table-striped" OnRowDataBound="gvAppliedWorks_RowDataBound">
                <Columns>
                    <asp:TemplateField HeaderText="Form No">
                        <ItemTemplate>
                            <asp:Literal ID="liFormNo" runat="server" Text='<% #Eval("FormNo")%>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Company Name">
                        <ItemTemplate>
                            <asp:Literal ID="liCompanyName" runat="server" Text='<% #Eval("Name")%>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Financial Bid">
                        <ItemTemplate>
                            <asp:Label ID="txtBidAmount" runat="server" CssClass="control-label" Text='<% # string.Format("{0:n2}", Eval("FinancialMoney").ToString())%>' />
                            %
                            <asp:Label ID="ddlBidPer" runat="server" CssClass="control-label" Text='<%# Eval("AboveBelow").ToString() %>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Awarded Percentage">
                        <ItemTemplate>
                            <div class="pull-left">
                                <asp:HiddenField ID="hdnIsAwarded" Value='<%# Eval("IsAwarded") %>' runat="server" />
                                <asp:TextBox ID="txtAwardedBid" Text='<%#Eval("AwardedBid")%>' Style="width: 70px !important;"   runat="server" CssClass="form-control"></asp:TextBox>
                            </div>
                            <div class="pull-left" style="margin-top: 7px">
                                &nbsp;  % <%# Eval("AboveBelow").ToString() %>
                            </div>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Remarks">
                        <ItemTemplate>
                            <asp:TextBox ID="txtRemarks" Text='<%#Eval("Remarks")%>' runat="server" CssClass="form-control"></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Award Tender">
                        <ItemTemplate>
                            <asp:LinkButton ID="lnkAward" runat="server" 
                                CommandArgument='<%# Eval("AppliedWorkID") %>' CommandName="award"
                                CssClass="btn btn-sm btn-danger" Enabled='<%# Convert.ToBoolean(Eval("IsBlackList")) == true ? false: true %>'
                                Visible='<%# Convert.ToBoolean( Eval("IsAwarded"))== false? true:false%>' CausesValidation="false" Text="Award"></asp:LinkButton>
                            <ajax:ConfirmButtonExtender ID="cbe" runat="server" DisplayModalPopupID="mpe" TargetControlID="lnkAward">
                            </ajax:ConfirmButtonExtender>
                            <ajax:ModalPopupExtender ID="mpe" runat="server" PopupControlID="pnlPopup" TargetControlID="lnkAward" OkControlID="btnYes"
                                CancelControlID="btnNo" BackgroundCssClass="modalBackground">
                            </ajax:ModalPopupExtender>
                            <asp:Panel ID="pnlPopup" runat="server" CssClass="modalPopup" Style="display: none">
                                <div class="header">
                                    Confirmation
                                </div>
                                <div class="body">
                                    Are you sure to Award this Work?
                                </div>
                                <div class="Popupfooter" align="right">
                                    <asp:Button ID="btnYes" CssClass="btn btn-sm btn-danger" runat="server" Text="Yes" />
                                    <asp:Button ID="btnNo" CssClass="btn btn-sm btn-primary" runat="server" Text="No" />
                                </div>
                            </asp:Panel>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText='Action'>
                        <ItemTemplate>
                            <asp:LinkButton ID="btnBlackList" runat="server" OnClick="btnBlackList_Click" Visible='<%# Convert.ToBoolean( Eval("IsAwarded"))== false? true:false%>' Enabled='<%# Convert.ToBoolean(Eval("IsBlackList")) == true ? false: true %>' Text='Defective'
                                CssClass="" ToolTip="Blacklist"></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>


**.cs**

   protected void gvAppliedWorks_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        try
        {

           // GridViewRow gr = ((GridViewRow)((Control)sender).Parent.Parent);
            if (e.CommandName == "award") 
            {
                GridViewRow gr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);

                int AppliedWorkID = e.CommandArgument.ToInt32(); //gvAppliedWorks.DataKeys[gr.RowIndex].Value.ToInt32();
                TextBox txtAwardedBid = gr.FindControl("txtAwardedBid") as TextBox;
                TextBox txtRemarks = gr.FindControl("txtRemarks") as TextBox;

                Label txtBid = gr.FindControl("txtBidAmount") as Label;
                Label lblAboveBelow = gr.FindControl("ddlBidPer") as Label;

                string AboveBelow = lblAboveBelow.Text;

                Decimal BidAmount = txtBid.Text.ToDecimal();
                if (String.IsNullOrEmpty(txtRemarks.Text))
                {
                    Utility.Msg_Error(this.Master, "Remarks Required!!!");
                    return;
                }
                Decimal AwardedBid = string.IsNullOrEmpty(txtAwardedBid.Text.Trim()) ? 0 : txtAwardedBid.Text.Trim().ToDecimal();
                string Remarks = txtRemarks.Text;

                if (AwardedBid != BidAmount)
                {
                    Utility.Msg_Error(this.Master, "Financial Bid must be equal to Awarded Percentage");
                    return;
                }

                if (ClsTender.IsReceivedSubMainOffice(AppliedWorkID, LoginUserID, AwardedBid, Remarks, BidAmount, AboveBelow))
                {
                    Utility.Msg_Success(this.Master, "Work Awarded Successfully!!!");
                    fill_gvAppliedWorks(labNitNo.Text.Replace("NIT No :", "").ToInt32(), labWorkNo.Text.Replace("Work No :", "").ToInt32());
                }
            }


        }
        catch (Exception ex)
        {
            Utility.Msg_Error(Master, ex.Message);
        }
    }

1 个答案:

答案 0 :(得分:0)

如果设置ValidateRequest = false解决问题,听起来您的网页正在尝试提交它认为有潜在危险的内容。您页面上的某个控件是否可能正在发送html或类似内容?

如果您的某个控件需要发送HTML,那么您可以通过向模型添加属性来克服此问题。

 [AllowHtml]
 [Required]
 public string article_content { get; set; }

这将允许将html输入控件。