ASP.Net Button没有提高回发

时间:2010-12-01 11:51:48

标签: c# asp.net asp.net-2.0 postback

我的一个Web应用程序中有一个简单的页面,它有以下标记:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewUpload.aspx.cs" Inherits="Mass_Upload.NewUpload" MasterPageFile="~/Master" Title="Document Mass Upload" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <link rel="Stylesheet" type="text/css" href="./../CSS/ScrollingTable.css" />
    <script type="text/javascript" src="../Help/HelpPopup.js" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="CenterH1" runat="server">
    Document Mass Upload <a href="javascript:loadHelpVid(5)"><img style="Border:None;" src="../Help/help_icon.gif" /></a>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="CenterBody" runat="server">
    <h3>Add New Upload</h3>
    <table class="list">
        <tr>
            <td class="label" style="text-align:right;">Local File:</td>
            <td class="normal">
                <asp:FileUpload ID="fuFilename" runat="server" Width="405" />
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" Text="*"
                            ErrorMessage="A file to upload is required"
                            Display="Dynamic"
                            ControlToValidate="fuFilename"
                            ValidationGroup="DocumentUpload"
                            runat="server" />
            </td>
        </tr>
        <tr>
            <td class="label" style="text-align:right;">Document Description:</td>
            <td class="normal">
                <asp:TextBox ID="txtDescription" runat="server" Width="405" MaxLength="50" />
                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" Text="*"
                            ErrorMessage="Document Description is a required field"
                            Display="Dynamic"
                            ControlToValidate="txtDescription"
                            ValidationGroup="DocumentUpload"
                            runat="server" />
            </td>
        </tr>
        <tr>
            <td class="label" style="text-align:right;">Document Type:</td>
            <td class="normal">
                <asp:DropDownList ID="ddDocType" runat="server" Width="405"/>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" Text="*"
                            ErrorMessage="Document Type is a required field"
                            Display="Dynamic"
                            ControlToValidate="ddDocType"
                            ValidationGroup="DocumentUpload"
                            runat="server" />
            </td>
        </tr>
        <tr>
            <td class="label" style="vertical-align:top;text-align:right;">Customer Types:</td>
            <td class="normal">
                <asp:Label ID="lblSingleCustomer" Text="Specific Code:" runat="server" /><asp:TextBox ID="txtSingleCustomer" runat="server" Width="100px" /><br />
                <asp:CheckBoxList ID="cblCustomerTypes" runat="server" Width="405px" RepeatDirection="Horizontal" RepeatColumns="5" RepeatLayout="Table" CellPadding="10" CellSpacing="0" />
            </td>
        </tr>
        <tr>
            <td class="normal" colspan="2">&nbsp;</td>
        </tr>
        <tr>
            <td class="normal" colspan="2"><asp:Label ID="lblError" runat="server" Text="" ForeColor="Red"/></td>
        </tr>
        <tr>
            <td class="normal" colspan="2">
                <asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClick="BtnCancel_Click" CssClass="medium" />
                <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="BtnUpload_Click" CssClass="medium" />
            </td>
        </tr>
    </table>
</asp:Content>

它用于正常工作,但现在,并且没有明显的代码/设计更改,“上传”和“取消”按钮都不再有效。

在代码隐藏的Page_Load()方法中设置断点表明它仅在最初加载页面时调用,而不是在按下按钮时调用。 同样,在“BtnUpload_Click”事件中放置一个断点表明它永远不会被调用。

现在这在我自己的开发机器和客户端服务器上都不起作用(从我的机器和服务器本身浏览到服务器页面时都是如此)。

重要的是要强调,在这个工作和现在不工作之间,我90%确定在代码方面没有任何改变。

任何帮助都会非常感激,因为顾客是正确的焦虑 - 而且我对导致它的原因一无所知!


编辑#1

以下是其中一个按钮的代码隐藏:

protected void BtnUpload_Click(object sender, EventArgs e)
    {
        if (DataAccess.CheckIfMassUploadAlreadyExists(fuFilename.FileName))
        {
            lblError.Text = "A file with the specified name already exists within the system.";
            return;
        }
        else
        {
            try
            {
                UploadFile();
            }
            catch(Exception ex)
            {
                lblError.Text = ex.Message;// +"\nUsername:" + System.Web.HttpContext.Current.User.Identity.Name;
                return;
            }
        }
    }

5 个答案:

答案 0 :(得分:14)

这就是原因..这也是一个非常恼人的原因!

此:

<script type="text/javascript" src="../Help/HelpPopup.js" />

应该是这个:

<script type="text/javascript" src="../Help/HelpPopup.js"></script>

无论谁决定脚本标记需要与其他所有HTML标记区别对待,都需要与Justin Bieber一起锁定在一个房间内。

答案 1 :(得分:6)

首先,你应该检查你的验证器和perhabs,评论它们进行测试。

您的网页上是否可能出现JavaScript错误? ASP-Button正在调用JavaScript-Funktion(WebForm_DoPostBackWithOptions),如果在此行之前存在JavaScript-Error,有时您无法按下按钮。

答案 2 :(得分:3)

显然客户端"return false"正在阻止回调,这可能是以下两个原因之一:

1-the validators always return not valid
2-some client script being called on the button returns false;

答案 3 :(得分:3)

冒着被拒绝投票的风险,因为发布标题问题的答案似乎不是OP的问题...我会提供这个修复我的类似的建议问题:

<body  background="images/GlobeBg.png" bgproperties="fixed">
</body>

问题是,&#39; bgproperties&#39;不是有效的属性名称​​,即使互联网上的一些人说它是。除了VWD 2008 Express中未被注意的波浪线下划线外,没有发出任何错误,否则页面看起来正常。简单地说,更新按钮和其他输入控件无法正常工作。

答案 4 :(得分:0)

这对我来说原因是同一页面中另一个视图的验证器被触发,因为它是同一个验证组的一部分。所以这阻止了回发。