仅允许验证MVC中的一个按钮

时间:2014-08-19 11:20:54

标签: jquery asp.net asp.net-mvc asp.net-mvc-3 razor

我使用MVC Razor创建了一个登录页面。该页面包含用户名和要输入的密码和两个按钮登录和注册按钮。

我已为两个文本框应用了必需的字段验证。单击“登录”按钮时,它工作正常。对于注册按钮,我希望将页面重定向到注册页面。但是当我单击SignUp按钮时,它会抛出错误,因为需要UserName和Password。

单击仅登录按钮时如何检查验证。

查看页面:

<body>
    @using (Html.BeginForm("CheckLogin", "Login"))
    {
        <div>
            <div>
                <img src="@Url.Content("../../Content/Images/Logo.png")" alt="logo" style="margin-top:17px;" />@*width="184" height="171"*@
            </div>
            <div class="LoginBg">
                <h3 class="LoginHdng">
                    @Html.Label("lblLogin", "Login")
                </h3>
                <table style="width: 745px;">
                    <tr>
                        <td>
                            <br />
                        </td>
                    </tr>
                    <tr>
                        <td style="font-size: 20px; text-align: right; width: 250px">
                            @Html.LabelFor(model => model.FirstName, "User Name: ")
                        </td>
                        <td>
                            @Html.TextBoxFor(model => model.FirstName, new { @class = "txtBox" })
                            @Html.ValidationMessageFor(model => model.FirstName)
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <br />
                        </td>
                    </tr>
                    <tr>
                        <td style="font-size: 20px; text-align: right;">
                            @Html.LabelFor(model => model.Password, "Password: ")
                        </td>
                        <td>
                            @Html.PasswordFor(model => model.Password, new { @class = "txtBox" })
                            @Html.ValidationMessageFor(model => model.Password)
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2" style="font-size: 16px; text-align: center; color: Red;">
                            <br />
                            @TempData["Error"]
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <br />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2" style="text-align: center;">
                            <input type="submit" value="Login" name="Command" class="loginBtn" />
                            &nbsp;&nbsp;&nbsp;&nbsp; 
                            <input type="submit" value="SignUp" name="Command" class="loginBtn" />
                        </td>
                    </tr>
                </table>
            </div>
        </div>
    }
</body>

控制器:

        [HttpPost]
        public ActionResult CheckLogin(FormCollection coll)//, string command
        {
            if (coll["Command"] == "Login")
            {
                using (var db = new MVC_DBEntities())
                {
                    if (db.tbl_UserDetails.ToList().Select(m => m.FirstName == coll["FirstName"] && m.Password == coll["Password"]).FirstOrDefault())
                    {
                        TempData["Error"] = "";
                        return this.RedirectToAction("Index", "Home");
                    }
                    else
                    {
                        TempData["Error"] = "Invalid UserName/Password";
                        return this.RedirectToAction("Login", "Login");
                    }
                }
            }
            else if (coll["Command"] == "SignUp")
            {
                return this.RedirectToAction("SignUp", "SignUp");
            }
            else
            {
                return this.RedirectToAction("Login", "Login");
            }
        }

提前致谢...

3 个答案:

答案 0 :(得分:1)

Signup按钮设为输入类型按钮而非输入类型提交,如下所示: -

<input type="button" value="SignUp" name="Command" class="loginBtn" id="SignUpBtn" />

并使用一些 Jquery / Javascript 转到SignUp Page: -

$("#SignUpBtn").click(function(){
   window.location.href="/SignUp/SignUp";
});

答案 1 :(得分:1)

您只需将取消类添加到不需要验证的按钮,如下所示:

<input type="submit" value="SignUp" name="Command" class="loginBtn cancel" />

如果您使用内置的jQuery不引人注目的验证,这将绕过验证。

答案 2 :(得分:0)

有几种方法。

  1. 你不能放&#34; SignUp&#34;作为链接并使用css看起来像按钮。
  2. 包装&#34; SingUp&#34;按钮围绕一个单独的表格
  3. <form action="/signup" method="get">
        <input type="submit" />
    </form>
    
    1. 或建议使用带有value属性的按钮。你可以使用js重定向或在控制器中你可以查找值和重定向。