1

我在这里发布代码,

ASP:

   <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
        CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
        <script type="text/javascript">

        function ShowHideBox() {
            boxdl.style.display = 'none';
        }
    </script>
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
        First Value:<asp:TextBox ID="first" runat="server" ></asp:TextBox><br />
        Second Value:<asp:TextBox ID="second" runat="server" ></asp:TextBox><br />
        Calculation:<asp:TextBox ID="calc" runat="server" ></asp:TextBox><br />
        <asp:Button ID="Calculate" runat="server" Text="Calculate" 
            onclick="Calculate_Click" />
         <div onclick="ShowHideBox();" style="display:block;height:10px;width:100px;background-color:#258000;"></div>
        <div style="background-color:#852000;width:100px;height:100px;display:block;border:black 1px solid;" id="boxdl">

        </div>
    </asp:Content>

C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Calculate_Click(object sender, EventArgs e)
    {
        calc.Text = (int.Parse(first.Text) + int.Parse(second.Text)).ToString();
    }
}

当我点击绿框时,红框消失了,但是当我点击计算按钮时,它计算两个文本框的结果并在第三个文本框中显示结果,但问题是红框在回发事件发生后出现,为什么???有什么办法可以防止这个问题???这只是一个演示。这个东西在我的项目中被使用了很多次......

4

1 回答 1

1

这是预期的输出。由于您回发到服务器,因此 JS 和 HTML 控件的状态将不会被持久化。

一种解决方案是使这些控件成为服务器端,即 runat="server"。

于 2013-06-24T11:21:01.367 回答