2016-10-19 1 views
0

у меня есть этот ASPX код:Если заявление Invalid в 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 

Я хочу, чтобы запустить функцию только если значение> 0. Как я могу это исправить? спасибо

+1

Никогда не делайте пустой блок блокировки. По крайней мере, запишите исключение. Кроме того, неудовлетворительная практика заключается в том, чтобы внедрить ваш код C# на страницу ASPX. Создайте [код позади] (https://msdn.microsoft.com/en-us/library/015103yb.aspx), чтобы содержать ваш код C#. – mason

+0

Я смущен ... сверху выглядит как javascript, но обработчик кликов выглядит как код C#. Вы можете сделать обработчик 'Button2_Click' в javascript? – Kritner

+0

@ Kritner, да. Вы можете сделать серверную сторону на стороне клиента. @ Мейсон, мне нужно использовать это как работу здесь. Как я могу исправить catch и If statment? –

ответ

1

У вас смешанный JavaScript и код C# вместе. Они не идут рука об руку. C# выполняется на сервере до того, как HTML и JS отправляют событие клиенту (где выполняется JavaScript). Вы должны использовать 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# немного более четкими.

+0

Теперь его гораздо яснее для меня. Я не программист, поэтому я пытаюсь найти обходной путь. Как я могу получить это значение, не используя C, но все же могу использовать инструкцию if. потому что теперь у меня это: ошибка CS0103: имя 'txtSolarValue' не существует в текущем контексте –

+0

@Fresher C не является C#. Это совершенно разные языки. В любом случае, ваш пример кода в вашем вопросе не является полным, он не показывает FormView, что TextBox находится внутри. Вы должны изменить свой вопрос, чтобы включить это. Но это, вероятно, нечто вроде 'var txtSolarValue = (TextBox) FormView1.FindControl (" txtSolarValue ");' – mason

+0

почти. Это сработало: var solarvalue = float.Parse (((TextBox) FormView1.FindControl («txtSolarValue»)). Текст); –

 Смежные вопросы

  • Нет связанных вопросов^_^