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

时间:2012-11-05 14:19:39

标签: c# webmatrix

使用C#和Webmatrix处理我的第一个Web页面项目。所以事情进展顺利,但现在遇到了一个令我难过的问题。 我正在做的是在此页面上发布一个包含一条消息的表单,然后我将消息保存到数据库中(稍后还会将电子邮件部分发送)。

我已经发布了下面的代码,它实际上比需要更长时间来说明问题,但我认为我会发布所有内容。 WebMatrix在我尝试运行之前已经突出了一个问题,当我看到倒数第二个大括号突出显示为黄色时。运行代码时(并且post值都正常)我收到错误“CS1513:} expected”。我最初认为我错误地添加了一个额外的闭合花括号,但经过检查和双重检查,然后逐行重新逐步重建代码,以确定它开始出错之后,我现在得出结论,没有任何嵌套的“if”和“foreach”语句中的“if(IsPost&& WebSecurity.IsAuthenticated)”“if”语句然后“工作”(尽管显然没有所需的逻辑)。

我已经检查过了,我发现了大量的C#代码示例。任何帮助,指针或任何其他非常感谢的。

Q

@{
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);

    }

    }
}

1 个答案:

答案 0 :(得分:4)

我的猜测是var fromUserId = @WebSecurity.CurrentUserId;行造成了问题。移除@之前的WebSecurity.CurrentUserId