所以我有一个包含HTML登录表单的视图,我需要通过post从表单中获取值到控制器。现在我在提交表单时尝试通过Content方法显示用户的用户名,一旦我知道控制器中有用户名,我就可以完成剩下的工作。我遇到的问题是,当我提交表单时,没有显示用户名,我已经输出到控制台以检查是否正在调用控制器操作并且它不是。
任何帮助都非常感谢欢呼!
查看
@{
@model AdminPanel.Models.cUser
Layout = null;
ViewBag.Title = "Login";
}
<head>
<link href="~/Content/Login.css" rel="stylesheet" type="text/css" />
<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
<link href="~/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- Div containing the log in box parent -->
<div class="log-in-box-parent">
<h2>LOG IN</h2>
<div class="log-in-form">
<form asp-action="Login" asp-controller="Login">
<input asp-for="Username" type="text" id="Username" placeholder="Username" /> <br />
<input aso-for="Password" type="password" id="Password" placeholder="Password" /> <br />
<input type="submit" id="login" value="Log in"/>
</form>
</div>
</div>
</body>
控制器
using AdminPanel.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace AdminPanel.Controllers
{
public class LoginController : Controller
{
// GET: Login
public ActionResult Index()
{
return View();
}
[HttpPost, ValidateAntiForgeryToken]
public ActionResult Login(cUser user)
{
return Content($"Hello {user.Username}");
}
}
}
最后是我的用户模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace AdminPanel.Models
{
public class cUser
{
public string Username { get; set; }
public string Password { get; set; }
}
}
答案 0 :(得分:1)
我注意到您的Login操作只接受POST请求,但您的<form
标记没有method="post"
属性,该属性会告诉表单执行POST请求(而不是GET)。我认为你需要设置它,以便它对action方法提出正确的请求。
<form asp-action="Login" asp-controller="Login" method="post">
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms也包含了这方面的一个例子。
答案 1 :(得分:1)
感谢那些试图帮助我的人,我在创建表单时使用HTML Helpers来解决问题。我编辑的视图可以在下面看到。
export const signOutSuccess = () => ({ type: SIGN_OUT_SUCCESS });