2010-05-22 81 views
0

我想从标签中获取文本。但标签文本是用Javascript设置的。 在页面上我可以看到标签中有文本,但是当我调试它时显示:“”。C#:标签不包含文本

那么如何从使用Javascript设置的标签中获取文本,至少这是我认为是问题的原因。

我的代码:存储在标签内

<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 2010-05-22 14:19:45

回答

2

文本不发送回服务器上的回发。这是一种单向的事情。

你应该做的,而不是放在你想回到服务器到一个隐藏表单域,像这样的任何文本:

ASP.NET:

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

的JavaScript:

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

C#:

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

非常感谢。我一直在寻找几个小时来解决这个错误。 – Vinzcent 2010-05-22 14:19:38