将HTML表单数据传递给ASP.NET控制器

时间:2018-01-10 20:32:05

标签: c# html asp.net forms asp.net-core-mvc

所以我有一个包含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; }
    }
}

2 个答案:

答案 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 });