使用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);
}
}
}
答案 0 :(得分:4)
我的猜测是var fromUserId = @WebSecurity.CurrentUserId;
行造成了问题。移除@
之前的WebSecurity.CurrentUserId
。