0

タイトルがすべてを物語っています。誰かが私が間違っていることを見つけることができます。私は HTMlValidation Summary と他の多くのものを移動しようとしました。コントローラー クラスから返されるビューに何か関係があるように感じます。

-- Model
 public class Login
{
    [Required(ErrorMessage = "First Name is required")]
    [Display(Name = "First Namex")]
    public string FirstName { get; set; }

    [Required(ErrorMessage = "Password is required")]
    [DataType(DataType.Password)]
    [Display(Name = "Passwordx")]
    public string Password { get; set; }
}

  -- Controller
[HttpPost]
    public ActionResult Login(string FirstName, string Password)
    {
        if (ModelState.IsValid)
        {
            bool validLogin = new UserBAL().ValidateUser(FirstName, Password);
            {
                if (validLogin == true)
                {
                    return RedirectToAction("Index", "Invoice");
                }
                else
                {
                  return RedirectToAction("Index");
                  //  ModelState.AddModelError("", "The user name or password provided is incorrect.");
                }
            }
        }
        return View();
    }

 --View 
@using (Html.BeginForm("Login", "Home"))  
{ @Html.ValidationSummary(true)
<div>
    <fieldset>   
        <legend>Login</legend>       
        <div class ="fields">              
          @Html.LabelFor(u => u.FirstName)
          </div>
          @Html.TextBoxFor(u => u.FirstName)
          @Html.ValidationMessageFor(u => u.FirstName)  <br />       

        <div class ="fields">            
         @Html.LabelFor(u => u.Password)
        </div>
         @Html.PasswordFor(u => u.Password) <br />                 
        <input type="submit" value="Log In" />
    </fieldset>
</div>   

}


[HttpPost]
    public ActionResult Login(EIAS.Models.Login login)
    {
        if (ModelState.IsValid)
        {
            bool validLogin = new UserBAL().ValidateUser(login);
            {
            if (validLogin == true)
                {
                    return RedirectToAction("Index", "Invoice");
                }
                else
                {
                  return RedirectToAction ("Index");
                  //  ModelState.AddModelError("", "The user name or password provided is incorrect.");
                }
            }
        }
        return View();
    }  
4

3 に答える 3

5

MVC でif (ModelState.IsValid)モデルを検証しますが、アクションでモデルを受け取りません。

public ActionResult Login(string FirstName, string Password)

アクションのパラメーターを次のように変更します。

public ActionResult Login(Login model)

そして、クライアントでの検証のために、次のことを確認します。

  • jquery 検証プラグイン (js) を含める場合
  • web.config を確認してください。keysClientValidationEnabledUnobtrusiveJavaScriptEnabledir が true になっています。

このリンクを確認してください

于 2013-09-10T02:20:00.927 に答える
0

Login アクションのパラメータとして Model を取得する必要があります

public ActionResult Login()
{
    // This will return the view with the form that you have above
    return View();
}

[HttpPost]
public ActionResult Login(Login login)
{
    // this is what your form will post too
    if (ModelState.IsValid)
    {
        bool validLogin = new UserBAL().ValidateUser(login.FirstName, login.Password);
        {
            if (validLogin == true)
            {
                return RedirectToAction("Index", "Invoice");
            }
            else
            {
              return RedirectToAction("Index");
              //  ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }
    }
    return View();
}

ビューではただ持っている

@using (Html.BeginForm())

MVC Razor Forms に関するリンクは次のとおりです。

それを試してみてください。

于 2013-09-09T20:55:32.073 に答える
0

問題は、ビューと、どのビューを返していたかにありました。検証に Index ビューを使用しようとしていましたが、ログイン ビューを作成していなかったので、それを行ってログイン ビューに検証を追加すると、機能しました。したがって、私の質問では、 Return View() は実際には何も返していませんでした

于 2013-09-10T14:01:52.690 に答える