Razor Webmatrix识别错误的“}”&引用;

Razor Webmatrix识别错误的“}”&引用;,razor,webmatrix,Razor,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;

我的页面由以下代码组成:

@{
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>
@{
var db=Database.Open(“Surgestuff”);
var sqlQ=“从注释中选择*”;
var data=db.Query(sqlQ);
Page.Title=“添加注释”;
}
@{
var CommenterrorMessage=“”;
var LengtherrorMessage=“”;
var date=@DateTime.Now;
如果(IsPost){
var CommName=“”;
var注释=”;
CommName=请求[“formName”];
注释=请求[“formComm”];
var Dt=@DateTime.Now;
var isValid=true;
if(Comment.IsEmpty()){
CommenterrorMessage=“此字段为必填字段”;
isValid=false;
}
否则如果(Comment.Length>400){
LengtherrorMessage=“注释必须少于400个字符”;
isValid=false;
}
else if(CommName.IsEmpty()){
CommName=“匿名”;
}
如果(有效){
var SQLINSERT=“插入注释(名称、注释、Dt)”+“值(@0、@1、@2)”;
Execute(SQLINSERT,CommName,Comment,Dt);
响应。重定向(“~/注释”);
}
其他的
{

请更正错误并重新提交表单。

} } } 添加注释 姓名:

评论:

@如果(!CommenterrorMessage.IsEmpty()){ @评论错误消息 } @如果(!LengtherrorMessage.IsEmpty()){ @长消息 }

当我尝试运行此页面时,会出现以下错误:

“2”在代码块的开头无效。只有标识符、关键字、注释、“(”和“{”才有效。”
当我在webmatrix中查看文件工作区时,它会识别出第一个关闭的“}”作为整个代码块的结尾,然后忽略其余部分,直到它到达“@2”。在升级到webmatrix 2.0之前,我的网站上已经有了完全相同的代码。我如何解决这个问题?

在Razor中,任何需要使用@as本身的地方(不是剃须刀指示器),使用:
@

所以请尝试:
@@0、@@1、@@2


来源:

在Razor中,任何需要使用@作为自身(而不是Razor指示器)的地方,请使用:
@

所以请尝试:
@@0、@@1、@@2


来源:

我终于将您的代码复制/粘贴到WebMatrix(在我的虚拟框上)。您有2个
@DateTime。现在,您的Razor
@{…}
中有个
s。如果您将它们更改为:

... = DateTime.Now;

它解决了问题。

我终于将您的代码复制/粘贴到WebMatrix(在我的虚拟框上)。您有2个
@DateTime。现在
s在您的Razor
@{…}
代码中。如果您将它们更改为:

... = DateTime.Now;

它解决了这个问题。

(为什么我们还是回到标记中的代码?:-/)我尽可能多地提供了信息,希望得到答案(为什么我们还是回到标记中的代码?:-/)我提供了尽可能多的信息,希望能收到答复。我对WebMatrix不太熟悉。项目目录中是否有
\bin
文件夹?尝试从
\bin
中删除应用程序
.dll
文件并重建应用程序。有一个/bin文件夹,但使用WebMatrix,您不能将其删除并重新编译重建应用程序,如果我这样做,它会给我文件依赖性错误,因为它不会自动检索它们。我已将验证更改为WebMatrix的首选格式,并截图显示WebMatrix如何忽略部分代码。我想我最终找到了它,发布了一个新答案。好的。我对WebMatrix不太熟悉。项目目录中是否有任何
\bin
文件夹?请尝试从
\bin
中删除应用程序
.dll
文件并重建应用程序。有一个/bin文件夹,但使用WebMatrix,您不能仅删除它们并重建应用程序,如果这样做,则会导致文件依赖性错误,因为它不会自动重新生成我已经将我的验证更改为WebMatrix的首选格式,并截图显示WebMatrix如何忽略部分代码我想我终于找到了,发布了一个新的答案。啊,是的,修复了,谢谢啊,是的,修复了,谢谢