C# 在视图MVC中运行方法
我有一个我必须创建的登录页面,它已经完成了,但是我想实现一个第一次登录密码更改,我在web服务上有一个方法来检查它是否是第一次登录,还有一个方法来更改密码并保存在我的数据库中,问题是,我有一个带有两个输入框的登录页面,一个用于用户名,另一个是密码,一旦我点击“登录”,我希望它检查这是否是第一次,如果是,将当前的两个输入框更改为“插入新pwd”和“重复新pwd”,但我不知道如何实现。我假设它在视图中,但我似乎找不到任何地方。 我的看法是:C# 在视图MVC中运行方法,c#,asp.net-mvc,login,login-control,C#,Asp.net Mvc,Login,Login Control,我有一个我必须创建的登录页面,它已经完成了,但是我想实现一个第一次登录密码更改,我在web服务上有一个方法来检查它是否是第一次登录,还有一个方法来更改密码并保存在我的数据库中,问题是,我有一个带有两个输入框的登录页面,一个用于用户名,另一个是密码,一旦我点击“登录”,我希望它检查这是否是第一次,如果是,将当前的两个输入框更改为“插入新pwd”和“重复新pwd”,但我不知道如何实现。我假设它在视图中,但我似乎找不到任何地方。 我的看法是: @model ProjectoEscolas.Models
@model ProjectoEscolas.Models.UserGetInfo
@{
ViewBag.Title = "LoginEscolas";
}
<link href="@Url.Content("~/bower_components/font-awesome/css/font-awesome.min.css")" rel="stylesheet" type="text/css" />
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
<link href="~/Content/login.css" rel="stylesheet" />
@using (Html.BeginForm("LoginEscolas", "Home", FormMethod.Post))
{
<body>
<img class="logotipos" src="../Images/logotipos.png"/>
<div class="login-form">
<!--<img class="loginimg" src="../Images/logotipos.png">-->
<h1>Área Privada</h1>
<p>Para entrar na Área Privada da DGEstE, deverá escrever o Utilizador e a Palavra-Chave das aplicações da <br /> DGEEC(Ex-GEPE)</p>
<br />
<div class="form-group ">
@Html.TextBoxFor(u => u.username, new { placeholder = "Utilizador", @class = "form-control" })
<i class="fa fa-user"></i>
</div>
<div class="form-group log-status">
@Html.PasswordFor(u => u.password, new { placeholder = "Palavra-Chave", @class = "form-control" })
<i class="fa fa-lock"></i>
</div>
<span class="alert">Invalid Credentials</span>
<input type="submit" value="Log In" class="log-btn">
@if (ViewBag.Error != null)
{
<h4 style="color:red">@ViewBag.Error</h4>
}
</div>
</body>
}
在您的登录Colas
操作中
检查您的数据库,查看它是否是第一次登录。为此,若用户已登录,则应在用户表中保存一个字段。如果是第一次登录,您可以将用户重定向到另一个具有不同视图的操作,比如说ChangePassword
。现在在ChangePassword
视图中,您可以从用户处获得新密码
[HttpPost]
public ActionResult LoginEscolas(UserGetInfo user)
{
Debug.WriteLine("Error");
if (user.username == null || user.password == null)
{
ViewBag.Error = "Insira os campos obrigatórios";
return View(user);
}
else
{
if (isValid(Convert.ToInt32(user.username), user.password))
{
FormsAuthentication.SetAuthCookie(user.username, false);
return RedirectToAction("Index", "Home");
}
}
if(isFirstLogin(Convert.ToInt32(user.username), user.password)))
{
setFirstLogin(Convert.ToInt32(user.username));
return RedirectToAction("ChangePassword");
}
return View(new UserGetInfo());
}
[HttpGet]
public ActionResult ChangePassword(int userName)
{
var model = new UserGetInfo {
username = username
};
return View(model);
}
[HttpPost]
public ActionResult ChangePassword(int userName, string newPassword)
{
// Change user password
}
public bool isFirstLogin(int username)
{
// Check database to see if it is first login
}
public bool setFirstLogin(int username)
{
// Set FirstLogin to false for this user
}
这应该是两个独立的方法和视图(具有独立的视图模型)
注册
操作和登录
action@StephenMuecke不会有注册,这是针对一家公司的,公司用户将获得na ID和密码,当他们首次登录时,他们将不得不更改密码。很抱歉没有说明清楚
[HttpPost]
public ActionResult LoginEscolas(UserGetInfo user)
{
Debug.WriteLine("Error");
if (user.username == null || user.password == null)
{
ViewBag.Error = "Insira os campos obrigatórios";
return View(user);
}
else
{
if (isValid(Convert.ToInt32(user.username), user.password))
{
FormsAuthentication.SetAuthCookie(user.username, false);
return RedirectToAction("Index", "Home");
}
}
if(isFirstLogin(Convert.ToInt32(user.username), user.password)))
{
setFirstLogin(Convert.ToInt32(user.username));
return RedirectToAction("ChangePassword");
}
return View(new UserGetInfo());
}
[HttpGet]
public ActionResult ChangePassword(int userName)
{
var model = new UserGetInfo {
username = username
};
return View(model);
}
[HttpPost]
public ActionResult ChangePassword(int userName, string newPassword)
{
// Change user password
}
public bool isFirstLogin(int username)
{
// Check database to see if it is first login
}
public bool setFirstLogin(int username)
{
// Set FirstLogin to false for this user
}