2013-06-24 27 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設置了一些服務器端文本框的值,但是當發生回發事件時它會清除。 –