DBにエントリが存在するかどうかをチェックするifステートメントがあります。コードは、電子メールアドレスがすでに存在するかどうかを正しくチェックしますが、電子メールが存在しない場合、エラーが発生します。
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding
on a null reference at CallSite.Target(Closure , CallSite , Object ) at
ASP._Page__footer_cshtml.Execute()
しかし、既存の電子メールを取得するコードを削除すると、次の行になります。
var getrecord = db.QuerySingle("Select Email from Registrations where email = @0", email);
emailexists = getrecord.email;
データは問題なくDBに保存されます。同じDbヘルパーを使用しているためかどうかわかりませんか?
try
{
var db = Database.Open("MiniDB");
var getrecord = db.QuerySingle("Select Email from Registrations where email = @0", email);
emailexists = getrecord.email;
if (emailexists != ""){
msg = "This Email address is already registed";
saved = false;
}
else {
var insertCommand = "INSERT INTO Registrations (Email, Name, regDate) VALUES(@0, @1, @2)";
db.Execute(insertCommand, email, name, regDate);
saved = true;
}
}
catch (Exception ex)
{
msg = ex.ToString();
saved = false;
}