如果语句在aspx文件中无效

时间:2016-10-19 18:47:31

标签: c# asp.net webforms

我有这个aspx代码:

<td>
  <asp:TextBox ID="txtSolarValue" runat="server" Text='<%# Eval("SolarValue") %>' />
</td>

<script runat="server">
var solarvalue = document.getElementById("ctl00_maincontent_FormView1_txtSolarValue");

if (solarvalue > 0)
{
    void Button2_Click(object sender, EventArgs e)
    {
        try
        {
            SendMail();                              
        }
        catch (Exception) { }
    }
}
</script>

但我得到了这个错误:

error CS1519: Invalid token 'if' in class, struct, or interface member declaration

如果值为&gt;我想运行该函数我怎么能解决它?感谢

1 个答案:

答案 0 :(得分:1)

您将JavaScript和C#代码混合在一起。他们不是齐头并进的。在将HTML和JS事件发送到客户端(JavaScript执行的地方)之前,C#在服务器上执行。您应该使用C#来获取solarValue而不是JavaScript。

此外,在C#中,您不能在方法体外部使用if语句。您可以在方法体内移动if语句来解决错误。

<script runat="server">
    void Button2_Click(object sender, EventArgs e) //this method should be moved to code behind
    {
        var txtSolarValue = (TextBox) FormView1.FindControl("txtSolarValue"); //this is necessary because your TextBox is nested inside a FormView
        var solarvalue = int.Parse(txtSolarValue.Text); //really need some error handling here in case it's not a valid number

        if (solarvalue > 0)
        {
            try
            {
                SendMail();                              
            }
            catch (Exception) { } //do not do empty catch blocks! Log the exception!
        }
    }
</script>

您还应该删除空的catch块。至少记录异常,不要悄悄地吞下它们。

请注意,现代做法是将任何C#代码放在名为code behind的单独文件中。它将使JavaScript和C#之间的区别更加明显。