Razor 和 JS 问题:检查用户是否存在 [英] Razor and JS Trouble: Check If User Exists

查看:71
本文介绍了Razor 和 JS 问题:检查用户是否存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做错了什么?我正在尝试验证用户不存在.我不知道如何发送@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></表单>

What am I doing wrong? I am trying to verify that a user does not exist. I cannot figure out how to send @email1 or @0. I tried it several ways. I can get it to work when I hard code the WHERE CLAUSE. For example, an email I know exists is doug@fresh.com. This works: "var userCheck = "SELECT * FROM USR WHERE EMAIL = 'doug@fresh.com'".Count()

These do not work: I have tried var userCheck = "SELECT * FROM USR WHERE EMAIL = " +email1.Count(); and "var userCheck = "SELECT * FROM USR WHERE EMAIL = @0".Count()

Do I have to pass email1 as a parameter???

ASP.NET- Razor:

@{
    Page.Title = "Register";
    var minPass = 2;
    var maxPass = 100;
    var email1 = "";
    var pass1 = "";
    var db = Database.Open("Resume");
    var userCheck = "SELECT * FROM USR WHERE EMAIL = " +email1;
    var userInsert = "INSERT INTO USR (EMAIL, PSWD) VALUES (@0, @1)";


    if(IsPost) {
        email1 = Request.Form["email1"];
        pass1 = Request.Form["pass1"];
        db.Execute(userInsert, email1, pass1);
        Response.Redirect("~/Default");
    }
}

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>Email already exists."; // ?????????????????
if (!document.getElementById('em100').checkValidity()) error += "</br>Emails are not valid.";
if (email1 !== email2) error += "</br>Emails do not match.";
if (pass1 !== pass2) error += "</br>Passwords do not match.";
if (pass1.length < minPass || pass1.length > maxPass) error += "</br>Password must be minPass - maxPass characters.";

解决方案

I want to comment that my approach was entirely wrong.

I am no longer using Javascript for validation, but only ASP.NET Razor.

For those who are struggling with a similar thing, below is my solution:

Be sure to include WebSecurity.InitializeDatabaseConnection("ResumeLink", "UserProfile", "UserId", "Email", true);

@{ 
    var username = "";
    var password = "";
    var confirmPassword = "";
    var regMsg = "";
    var minPass = 2;
    var maxPass = 5;


    if (!IsPost) {
    if (WebSecurity.IsAuthenticated) {
        regMsg = String.Format("You are already logged in. (User name: {0})", WebSecurity.CurrentUserName);
        }
    }

    if (IsPost){
    WebSecurity.Logout();    
    username = Request["username"];
    password = Request["password"];
    confirmPassword = Request["confirmPassword"];

    try {
        var mail = new System.Net.Mail.MailAddress(username);
    } catch {
        regMsg += "Invalid email format.";
    }

    //Validation.Add("username", Validator.Regex(@"^[A-Za-z0-9._%+-]+@@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$", regMsg += "Invalid email format."));
    if (password != confirmPassword) {regMsg += "</br>Passwords don't match.";}
    if (WebSecurity.UserExists(username)) {regMsg += String.Format("</br>User '{0}' already exists.", username);}
    if (password.Length < minPass || password.Length > maxPass) {regMsg += "</br>Password doesn't meet length requirement.";}
    if (regMsg == "") {
        WebSecurity.CreateUserAndAccount(username,password,null,false);
        regMsg = String.Format("{0} created.", username);
        Response.Write("Registration Successful!");
        Response.Redirect("~/Default.cshtml");
        }
    }
}

<style>header {visibility: hidden;}</style>
<body>
    <div>
        <h1>Register</h1>
        <form method="post">
            <p>
                @if(regMsg != ""){
                    <span class="errorMessage">@Html.Raw(regMsg)</span>
                }
            </p>

            <p>
                <label for="username">Email Address:</label><br/>
                <input type="text" name="username" id="username" value='@Request["username"]' />
            </p>
            <p>
                <label for="password">Password @minPass-@maxPass Characters:</label><br/>
                <input type="password" name="password" id="password" value="" />
            </p>   
            <p>
                <label for="confirmPassword">Confirm Password:</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>
        </form>
    </div>
</body>

这篇关于Razor 和 JS 问题:检查用户是否存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆