【发布时间】:2021-12-26 05:00:48
【问题描述】:
我已经创建了一个登录操作方法来登录用户,虽然我已经搭建了模型和视图,但我现在正尝试将该路由添加到特定页面,但我收到错误 404,因为它找不到路线。
下面是 UsersController.cs :
// GET: Users
public ActionResult Index()
{
return View(db.Users.ToList());
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(User objUser)
{
if (ModelState.IsValid)
{
using (DE_StoreContext db = new DE_StoreContext())
{
var obj = db.Users.Where(a => a.username.Equals(objUser.username) && a.Password.Equals(objUser.Password)).FirstOrDefault();
if (obj != null)
{
Session["UserID"] = obj.id.ToString();
Session["UserName"] = obj.username.ToString();
return RedirectToAction("UserDashBoard");
}
}
}
return View(objUser);
}
这是网页Login.cshtml:
@model DE_Store.Models.User
@{
ViewBag.Title = "Login";
}
@using (Html.BeginForm("Login", "Users", FormMethod.Post))
{
<fieldset>
<legend>Mvc Simple Login Application Demo</legend>
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@if (@ViewBag.Message != null)
{
<div style="border: 1px solid red">
@ViewBag.Message
</div>
}
<table>
<tr>
<td>@Html.LabelFor(a => a.username)</td>
<td>@Html.TextBoxFor(a => a.username)</td>
<td>@Html.ValidationMessageFor(a => a.username)</td>
</tr>
<tr>
<td>
@Html.LabelFor(a => a.Password)
</td>
<td>
@Html.PasswordFor(a => a.Password)
</td>
<td>
@Html.ValidationMessageFor(a => a.Password)
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Login" />
</td>
<td></td>
</tr>
</table>
</fieldset>
}
这是我用于路由的route.config.cs 文件:
routes.MapRoute(
name: "Login",
url: "{controller}/{action}/{id}",
new { controller = "Users", action = "Login", id = UrlParameter.Optional }
);
我个人的想法要么是我在Login页面中定义错误,要么是自定义路由错误,我一直在尝试使用教程添加Login动作方法。我尝试通过添加链接从 Web 应用程序的另一部分访问,但找不到 /Users/Login 路由
【问题讨论】:
-
与您的问题不严格相关,但以明文形式存储密码绝不是一个好主意!
-
谢谢,我知道了,目前只是为了演示目的
-
@LasSincas:您使用表单身份验证吗?请出示您的
[HttpGet] Login()代码。 -
不,我不是` public ActionResult Index() { return View(db.Users.ToList()); }`
-
如果你也有默认映射,那么映射这条路线有什么意义(你)?
标签: c# asp.net-mvc routes