C# 使用导致“CS1513:}预期”错误的嵌套IF语句(Webmatrix中的C)

C# 使用导致“CS1513:}预期”错误的嵌套IF语句(Webmatrix中的C),c#,webmatrix,C#,Webmatrix,使用C和Webmatrix开发我的第一个Web页面项目。所以,事情一直进展得很顺利,但现在遇到了一个让我困惑的问题。 我正在做的是在这个页面上发布一个包含消息的表单,然后我将消息保存到DB,稍后还将启动电子邮件部分 我已经发布了下面的代码,它实际上比说明问题所需的时间要长,但我还是想发布所有代码。WebMatrix在我尝试运行它之前已经在突出显示手头的一个问题,当我看到倒数第二个结束的花括号被突出显示为黄色时。当运行代码和post值都正常时,我得到了预期的错误CS1513:}。我最初以为我错加了

使用C和Webmatrix开发我的第一个Web页面项目。所以,事情一直进展得很顺利,但现在遇到了一个让我困惑的问题。 我正在做的是在这个页面上发布一个包含消息的表单,然后我将消息保存到DB,稍后还将启动电子邮件部分

我已经发布了下面的代码,它实际上比说明问题所需的时间要长,但我还是想发布所有代码。WebMatrix在我尝试运行它之前已经在突出显示手头的一个问题,当我看到倒数第二个结束的花括号被突出显示为黄色时。当运行代码和post值都正常时,我得到了预期的错误CS1513:}。我最初以为我错加了一个额外的右括号,但在检查和重复检查之后,然后慢慢地逐行重建代码,以确定在哪行代码开始出错,我现在得出的结论是,如果ifIsPost&&WebSecurity.IsAuthenticated if语句中没有任何嵌套的if和foreach语句,那么它就可以工作,尽管显然不符合所需的逻辑

我已经检查过了,我发现很多C代码示例都是这样做的。任何帮助,指点或任何其他非常感谢

Q


我猜行var fromUserId=@WebSecurity.CurrentUserId;这是问题的根源。删除@before-WebSecurity.CurrentUserId。

我猜行var-fromUserId=@WebSecurity.CurrentUserId;这是问题的根源。删除@before WebSecurity.CurrentUserId.

它可能指向代码中的一行-那一行是什么?此外,您真的不应该在视图中放置这样的逻辑。出于某种原因,列出的行号与我代码中的行号不匹配,甚至比我的代码行高出2倍左右,但是看到它周围的代码,它说这是最后一个右括号。谢谢你对我的逻辑布局的评论。恐怕这是我在刚刚阅读了WebMatrix开始的ASP.NET网页之后的第一个真正的项目。我浏览了一下MVC,但是对我来说,这些概念很难理解,所以我决定坚持以更简单的方式获得结果@{这永远不会结束。它可能指向代码中的一行-那一行是什么?而且,你真的不应该在视图中放置这样的逻辑。出于某种原因,列出的行号与我代码中的行号不匹配,它比我的代码行高出2倍左右,但是看到它周围的代码,它就说它是最后一个大括号。感谢您对我的逻辑布局的评论。我恐怕这是我在刚刚阅读了WebMatrix的ASP.NET网页开头部分后的第一个真正的项目。我曾短暂浏览过MVC,但对我来说,这些概念更难理解,所以我决定坚持以更简单的方式获得结果。您打开了一个bra行政长官@{这永远不会结束。没门!不知何故,我对复制粘贴错误视而不见!我也有同样的问题,并认为这与嵌套的if语句有关。在我的情况下,我在使用Webmatrix 2时添加了一些额外的@,但升级到v3No way后不需要这些@!不知何故,我对复制粘贴错误视而不见!我也有同样的问题,但没有虽然它与嵌套的if语句有关。在我的例子中,我在使用Webmatrix 2时添加了一些额外的@,但升级到v3后不需要这些@
@{
if(IsPost && WebSecurity.IsAuthenticated){
    var fromEmail = WebSecurity.CurrentUserName;
    var fromUserId = @WebSecurity.CurrentUserId;
    var message = Request["message"];
    var uid = Request["uid"];
    bool multiSend = false;
    var db = Database.Open("Tennegize");

    var skillLevel = 0;
    if(Request["multi"]=="1"){
        multiSend = true;
    }

    //Save to message to BD
    var insertQuery = "INSERT INTO Messages (UserEmail, UserId, Message) VALUES (@0, @1, @2)";
    db.Execute(insertQuery, fromEmail, fromUserId, message);
    decimal messageId = db.GetLastInsertId();

    if(multiSend){
         //Get email address' from all recipients
        var sql2 = "SELECT Email FROM UserProfile WHERE SkillLevel = @0";
        var data2 = db.Query(sql, skillLevel);
        var totalRecipents = data2.Count();
        //Log all recipients who will recieve this notification
        foreach(var recipient in data2){
            insertQuery = "INSERT INTO Message_Recipients (UserId, UserEmail, MessageId) VALUES (@0, @1, @2)";
            db.Execute(insertQuery, uid, data.Email, messageId); 
        }

    }else{
        // Get to recipients email address
        var sql = "SELECT Email FROM UserProfile WHERE UserId = @0";
        var data = db.QuerySingle(sql, uid);
        //Log the recipient of this norification
        insertQuery = "INSERT INTO Message_Recipients (UserId, UserEmail, MessageId) VALUES (@0, @1, @2)";
        db.Execute(insertQuery, uid, data.Email, messageId);

    }

    }
}