2012-06-29 35 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’是無效的在代碼塊的開始處。只有標識符,關鍵字和註釋「(」和「{」是有效的。' 當我查看webmatrix中的文件工作區時,它會識別第一個關閉「}」作爲整個代碼塊的結束,然後忽略其餘部分直到它被以「@ 2」。我有完全相同的代碼在我的網站工作之前我升級到WebMatrix的2.0。我怎樣才能解決這個問題?

+0

(爲什麼我們回到代碼中的標記呢?: - /) – 2012-06-29 03:55:09

+0

我給儘可能多的信息儘可能地希望得到一個答案 – mhcodner

回答

1

我最終將您的代碼複製/粘貼到WebMatrix(在我的虛擬框中)。你的剃刀@{ ... }代碼中有2 @DateTime.Now s。如果將其更改爲:

... = DateTime.Now; 

它解決了這個問題。

+0

啊,是的,修復它,謝謝 – mhcodner

0

在剃刀,任何地方,你需要使用@作爲本身(而不是剃刀指標),使用方法:@@

所以嘗試:@@0, @@1, @@2

來源:http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

+0

抱歉,但沒有解決它 – mhcodner

+0

確定。我對WebMatrix不是很熟悉。項目目錄中是否有任何'\ bin'文件夾?嘗試從'\ bin'中刪除應用程序'.dll'文件並重建應用程序。 – Tohid

+0

有一個/ bin文件夾,但WebMatrix不能只是刪除它們並重建應用程序,如果我這樣做,它會給我文件依賴性錯誤,因爲它不會自動檢索它們。我已將驗證更改爲WebMatrix的首選格式,並以截圖顯示WebMatrix如何忽略部分代碼[Screenshot](https://dl.dropbox.com/u/48386169/inconsiderate.png) – mhcodner