2012-06-29 5 views
1

Моя страница состоит из следующего кода:WebMatrix признает неправильно «}»

@{ 
var db= Database.Open("Surgestuff"); 
var sqlQ = "SELECT * FROM Comments"; 
var data = db.Query(sqlQ); 
Page.Title = "Add Comment"; 
} 
@{ 
    var CommenterrorMessage = ""; 
    var LengtherrorMessage = ""; 
    var date = @DateTime.Now; 
     if (IsPost) { 
     var CommName = ""; 
     var Comment = ""; 
     CommName=Request["formName"]; 
     Comment=Request["formComm"]; 
     var Dt = @DateTime.Now; 
     var isValid = true; 
     if (Comment.IsEmpty()){ 
      CommenterrorMessage = "This field is required"; 
      isValid = false; 
     } 

     else if (Comment.Length > 400){ 
      LengtherrorMessage = "Comment must be less than 400 characters"; 
      isValid = false; 
     } 

     else if (CommName.IsEmpty()){ 
      CommName = "Anonymous"; 
     } 

     if (isValid){ 
     var SQLINSERT = "INSERT INTO Comments (Name, Comment, Dt) " + "VALUES (@0, @1, @2)"; 
     db.Execute(SQLINSERT, CommName, Comment, Dt); 
     Response.Redirect("~/Comments"); 
     } 

     else 
     { 
      <p class="message error">Please correct the errors and resubmit the form.</P> 
     } 
    } 
} 
<fieldset><legend>Add Comment</legend> 
<form action="" method="post" enctype="multipart/form-data"> 
    Name: 
    <p><input type="text" id="Name" name="formName"/></p> 
    Comment: 
    <p><textarea cols="35" rows="5" id="Comment" name="formComm"/></textarea></p> 
    @if(!CommenterrorMessage.IsEmpty()) { 
     <label for="formComm" class="validation-error"> 
      @CommenterrorMessage 
     </label> 
    } 
    @if(!LengtherrorMessage.IsEmpty()) { 
     <label for="formComm" class="validation-error"> 
      @LengtherrorMessage 
     </label> 
    } 

    <p><input type="submit" value="Add Comment" /></p> 
</form> 
</fieldset> 

И когда я пытаюсь запустить эту страницу он дает мне ошибку:

"2" не является действительным в начале кода. Только идентификаторы, ключевые слова, комментарии "(" и "{" действительны. ' Когда я смотрю на рабочую область файлов в веб-матрице, он распознает первое закрытие «}» в качестве конца для всего блока кода, а затем игнорирует остальные, пока не будет доходит до «@ 2». У меня был тот же самый код, который работал на моем веб-сайте, прежде чем я обновился до webmatrix 2.0. Как я могу это исправить?

+0

(Почему мы все-таки вернулись к разметке кода?): - /) –

+0

Я дал как можно больше информации, чтобы получить ответ – mhcodner

ответ

1

Я, наконец, копировал/вставлял ваш код в WebMatrix (в моей виртуальной коробке). У вас есть 2 @DateTime.Now s внутри вашего кода Razor @{ ... }. если вы измените их на:

... = DateTime.Now; 

решает проблему.

+0

Ах, да, это исправлено, спасибо – mhcodner

0

В Razor в любом месте вам нужно использовать @ как сам (не индикатор Razor), используйте:. @@

Так Попытка: @@0, @@1, @@2

. Источник: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

+0

извините, но это не исправило – mhcodner

+0

Ok. Я не очень хорошо знаком с WebMatrix. Есть ли папка '\ bin' в каталоге проекта? попробуйте удалить файлы '.dll' из' \ bin' и перестроить приложение. – Tohid

+0

Существует папка/bin, но с помощью WebMatrix вы не можете просто удалить их и перестроить приложение, если я это сделаю, он дает мне ошибки в зависимости от файла, потому что он автоматически не извлекает их. Я изменил мою валидацию на предпочтительный формат для WebMatrix и сделал скриншот, чтобы показать, как WebMatrix игнорирует разделы кода [Снимок экрана] (https://dl.dropbox.com/u/48386169/inconsiderate.png) – mhcodner