Razor 和 JS 问题:检查用户是否存在 [英] Razor and JS Trouble: Check If User Exists
问题描述
我做错了什么?我正在尝试验证用户不存在.我不知道如何发送@email1 或@0.我尝试了几种方法.当我对 WHERE CLAUSE 进行硬编码时,我可以让它工作.例如,我知道存在的电子邮件是 doug@fresh.com.这有效: "var userCheck = "SELECT * FROM USR WHERE EMAIL = 'doug@fresh.com'".Count()
这些做不起作用:我试过 var userCheck = "SELECT * FROM USR WHERE EMAIL = " +email1.Count();
和 "varuserCheck = "SELECT * FROM USR WHERE EMAIL = @0".Count()
我是否必须将 email1
作为参数传递???
ASP.NET-剃刀:
@{Page.Title = "注册";var minPass = 2;var maxPass = 100;var email1 = "";var pass1 = "";var db = Database.Open("恢复");var userCheck = "SELECT * FROM USR WHERE EMAIL = " +email1;var userInsert = "INSERT INTO USR (EMAIL, PSWD) VALUES (@0, @1)";如果(IsPost){email1 = Request.Form["email1"];pass1 = Request.Form["pass1"];db.Execute(userInsert, email1, pass1);Response.Redirect("~/默认");}}
Javascript:
var error = "";var email1 = document.getElementById('em100').value;var email2 = document.getElementById('em101').value;var pass1 = document.getElementById('pw100').value;var pass2 = document.getElementById('pw101').value;if (@userCheck > 0) error += "</br>电子邮件已经存在.";//?????????????????????if (!document.getElementById('em100').checkValidity()) error += "</br>电子邮件无效.";if (email1 !== email2) error += "</br>电子邮件不匹配.";if (pass1 !== pass2) error += "</br>密码不匹配.";if (pass1.length < minPass || pass1.length > maxPass) error += "</br>密码必须是 minPass - maxPass 个字符.";
我想说我的方法完全错误.
我不再使用 Javascript 进行验证,而只使用 ASP.NET Razor.
对于那些正在为类似事情而苦苦挣扎的人,以下是我的解决方案:
确保包含WebSecurity.InitializeDatabaseConnection("ResumeLink", "UserProfile", "UserId", "Email", true);
@{var 用户名 = "";var 密码 = "";var confirmPassword = "";var regMsg = "";var minPass = 2;var maxPass = 5;如果(!IsPost){如果(WebSecurity.IsAuthenticated){regMsg = String.Format("您已经登录.(用户名:{0})", WebSecurity.CurrentUserName);}}如果(IsPost){WebSecurity.Logout();用户名 = 请求 ["用户名"];密码 = 请求 ["密码"];确认密码 = 请求["确认密码"];尝试 {var mail = new System.Net.Mail.MailAddress(username);} 抓住 {regMsg += "无效的邮件格式.";}//Validation.Add("username", Validator.Regex(@"^[A-Za-z0-9._%+-]+@@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$", regMsg += "电子邮件格式无效."));if (password != confirmPassword) {regMsg += "</br>密码不匹配.";}if (WebSecurity.UserExists(username)) {regMsg += String.Format("</br>用户 '{0}' 已经存在.", username);}if (password.Length < minPass || password.Length > maxPass) {regMsg += "</br>密码不符合长度要求.";}if (regMsg == "") {WebSecurity.CreateUserAndAccount(username,password,null,false);regMsg = String.Format("{0} 已创建.", 用户名);Response.Write("注册成功!");Response.Redirect("~/Default.cshtml");}}}<style>header {visibility: hidden;}</style><身体><div><h1>注册</h1><form method="post"><p>@if(regMsg != ""){<span class="errorMessage">@Html.Raw(regMsg)</span>}</p><p><label for="username">电子邮件地址:</label><br/><input type="text" name="username" id="username" value='@Request["username"]'/></p><p><label for="password">密码@minPass-@maxPass 字符:</label><br/><input type="password" name="password" id="password" value=""/></p><p><label for="confirmPassword">确认密码:</label><br/><input type="password" name="confirmPassword" id="confirmPassword" value=""/></p><p><input type="submit" value="Submit"/><input type="button" value="Cancel" onclick="javascript:location.href='Default.cshtml'"/></p><p></p></表单>