C#とWebmatrixを使用して最初のWebページプロジェクトに取り組んでいます。ですから、物事はかなり順調に進んでいますが、今では私が困惑している問題に遭遇しました。私が行っているのは、メッセージを含むフォームをこのページに投稿し、メッセージをDBに保存することです(後で電子メールの部分も実行します)。
以下のコードを投稿しました。実際には、問題を説明するのに必要な時間よりも長くなっていますが、それでもすべて投稿すると思いました。WebMatrixを実行しようとする前に、最後から2番目の閉じ中括弧が黄色で強調表示されているのを確認したときに、WebMatrixはすでに目前の問題を強調表示していました。コードを実行すると(そして投稿値はすべてOKです)、「CS1513:}expected」というエラーが表示されます。最初は誤って閉じ中括弧を追加したと思っていましたが、チェックして再確認し、コードを1行ずつゆっくりと再構築して、どの行が間違っているかを特定した後、今では何もなしであるという結論に達しました。 「if(IsPost && WebSecurity.IsAuthenticated)」「if」ステートメント内のネストされた「if」および「foreach」ステートメントの
調べてみると、これが行われている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);
}
}
}