我有这个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;我想运行该函数我怎么能解决它?感谢
答案 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#之间的区别更加明显。