2010-05-22 2 views
0

텍스트를 레이블에서 빼내고 싶습니다. 그러나 레이블 텍스트는 Javascript로 설정됩니다. 페이지에 레이블에 텍스트가 있음을 볼 수 있지만 디버깅 할 때 ":"이 표시됩니다.C# : 레이블에 텍스트가 없습니다.

그렇다면 자바 스크립트로 설정된 레이블에서 텍스트를 가져 오는 방법은 적어도 내가 생각하기에 문제입니다.

내 코드 : 라벨 내부에 저장된

<asp:TextBox ID="txtCount" runat="server" Width="50px" Font-Names="Georgia, Arial, sans-Serif" ForeColor="#444444"></asp:TextBox> 
<ajaxToolkit:NumericUpDownExtender ID="NumericUpDownExtender1" runat="server" Minimum="1" 
TargetButtonDownID="btnDown" TargetButtonUpID="btnUp" TargetControlID="txtCount" Width="20" /> 
<asp:ImageButton ID="btnUp" runat="server" AlternateText="up" ImageUrl="Images/arrowUp.png" 
OnClientClick="setAmountUp()" ImageAlign="Top" CausesValidation="False" /> 
<asp:ImageButton ID="btnDown" runat="server" AlternateText="down" ImageUrl="Images/arrowDown.png" OnClientClick="setAmountDown()" ImageAlign="Bottom" 
CausesValidation="False" /> 

<asp:Label ID="lblKorting" runat="server" /> 

<asp:Label ID="lblAmount" runat="server" /> 

<asp:Button ID="btnBestel" runat="server" CssClass="btn" Text="Bestel" OnClick="btnBestel_Click1" /> 

JS

function setAmountUp() 
{ 
    var aantal = document.getElementById('<%=txtCount.ClientID%>').value-0; 

    aantal+=1; 
    calculateAmount(aantal); 
} 

function setAmountDown() 
{ 
    var aantal = document.getElementById('<%=txtCount.ClientID%>').value-0; 

    if(aantal > 1) 
     aantal -=1; 

    calculateAmount(aantal); 
} 

function calculateAmount(aantal) 
{ 

    var prijs = document.getElementById('<%=lblPriceBestel.ClientID%>').innerHTML -0; 
    var totaal = 0; 

    if(aantal < 2) 
    { 
     totaal = prijs * aantal; 
     document.getElementById('<%=lblKorting.ClientID%>').innerHTML = ""; 
    } 

    else if(aantal >= 2 && aantal < 5) 
    { 
     totaal = (prijs * aantal)*0.95; 
     document.getElementById('<%=lblKorting.ClientID%>').innerHTML = "-5%"; 
    } 

    else if(aantal >= 5) 
    { 
     totaal = (prijs * aantal)*0.90; 
     document.getElementById('<%=lblKorting.ClientID%>').innerHTML = "-10%"; 
    } 

    document.getElementById('<%=lblAmount.ClientID%>').innerHTML = totaal; 
} 

C#을

private OrderBO bestelling; 
    protected void btnBestel_Click1(object sender, EventArgs e) 
    { 
     bestelling = new OrderBO(); 
     bestelling.Amount = Convert.ToInt32(lblAmount.Text); //<--- THIS IS "" in the debugger, but on the page 10 
    } 
+0

워렌 ' 좋은 접근법입니다. 그러나 누군가가 웹 페이지에서 전송 된 데이터를 쉽게 조작 할 수 있고 페이지의 값을 사용하여 계산할 수 있기 때문에 페이지에서 보낸 금액을 사용하여 주문을 작성하지 않도록하십시오. 주문 금액을 입력하면 원하는 금액을 쉽게 설정할 수 있습니다. – Sijin

답변

2

텍스트는 포스트 백에 다시 서버로 전송되지 않습니다. 그것은 일방적 인 종류의 것입니다.

대신해야 당신이 숨겨진 양식 필드에 다시 서버로 이동과 같이 할 텍스트 넣어 무엇 :

ASP.NET :

<asp:HiddenField runat="server ID="hfAmount" /> 

자바 스크립트 :

document.getElementById('<%=hfAmount.ClientID%>').value = totaal; 

C 번호 :

bestelling.Amount = Convert.ToInt32(hfAmount.Value); 
+0

고마워. 이 오류를 해결하기 위해 몇 시간 씩 찾고있었습니다. – Vinzcent