C# 网络应用程序 POST

C# WebApplication POST

我正在尝试 POST 使用 C#

的表单

我进行了一些搜索,但是我无法正确编码(我是这个领域的新手)。

这是我的代码;

查看;

<form>
          <div class="field-wrap">
              <label>
                  Email Address<span class="req">*</span>
              </label>
              <input type="email" id="input-username" name="Username" required autocomplete="on" />
          </div>

          <div class="field-wrap">
            <label>
              Password<span class="req">*</span>
            </label>
            <input type="password" id="input-password" name="Password" required autocomplete="on"/>
          </div>

          <p class="forgot"><a href="#">Forgot Password?</a></p>

          <button class="button button-block" id="button-login">Log In</button>

      </form>

控制器;

// GET: User
        [HttpPost]
        public ActionResult Login()
        {
            string username = Session["Username"].ToString();
            string password = Session["Password"].ToString();

            Service iLocationService = new Service();
            var result = Service.MemberGetLogin( username, password, "127.0.0.1" );

            ViewBag.Message = result;

            return View();
        }

Javascript;

jQuery(document).ready(function () {
$("#button-login").click(function () {
    $.ajax({
        type: "POST",
        url: "/Controllers/UserController/login/",
        data: $(this).serialize(),
        dataType: "json"
    })
    .done(function (result) {
        console.log(result);
    })
    .fail(function (a) {
        console.log( a);
    });
});

});

我想做的是POST检查用户的输入值。

提前致谢

看看这一行

string username = Session["Username"].ToString();

在您的代码中,您试图从会话变量中读取用户名和密码值。 Session 的用户名和密码是谁设置的?您应该从发布的表格中阅读并使用它。

[HttpPost]
public ActionResult Login(string userName,string password)
{
  // do something with userName and password and return something
}

此外,您需要确保序列化的是表单,而不是单击的按钮。我个人更喜欢使用 Html 辅助方法来生成表单标签,并在我的 javascript 代码中使用表单的 action 属性值,而不是对 url 进行硬编码。

所以在我看来

@using(Html.BeginForm("login","User"))
{
    //Your existing form inputs goes here
   <button class="button button-block" id="button-login">Log In</button>
}

并在脚本中

$("#button-login").click(function () {
     $.ajax({
        type: "POST",
        url: $(this).closest("form").attr("action"),
        data: $(this).closest("form").serialize()           
     })
});

由于您正在执行 ajax 表单提交,我建议您 return 一个 json 响应,您的客户端代码可以解析该响应并做进一步的事情。

[HttpPost]
public ActionResult Login(string userName,string password)
{
   //if userName and password are valid
       return Json(new { Status="success"});
   // else
         return Json(new { Status="failed", Message="Invalid credentials});
}

在你完成的回调中,你应该检查这个值并做进一步的事情

.done(function (result) {
   if(result.Status==="success")
   {
     window.location.href="/Home/Index"; // change to wherever you want to redirect to
   }
   else
   {
     alert(result.Message);
   }    
})