2013-06-24 22 views
0

这里我张贴代码清除后,的JavaScript更改回发

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(); 
    } 
} 

当我点击绿色的盒子,红盒子消失,但是当我点击计算按钮,它会计算两个文本框的结果,并在第三个文本框中显示结果, 但问题是发生回发事件后出现红框,为什么? 有没有解决方案来防止这个问题? 这只是一个演示。这个东西在我的项目中用了很多次...

回答

1

这是预期的输出。自从发布回服务器后,JS和HTML控件的状态将不会被保留。

一个解决方案可以是使这些控件服务器端,即runat =“服务器”。

+0

所有的控件都是服务器端预期的div标签,但是我希望在回发事件发生后还要保持javascript输出 –

+0

Mate,那么您需要在某些服务器控件中存储div的状态。尝试隐藏的控制,并在页面加载使用JS来相应地设置div的状态。 – bazz

+0

同样的事情也出现在服务器端的文本框值,我通过javascript设置了一些服务器端文本框的值,但是当发生回发事件时它会清除。 –