我尝试使用C#
发布表单我进行了一些搜索,但是我无法正确编码(我是这个领域的新手)。
这是我的代码;
查看;
id
控制器;
<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>
的Javascript;
// 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();
}
});
我要做的是POST输入值以取消用户。
先谢谢
答案 0 :(得分:2)
看看这一行
string username = Session [“Username”]。ToString();
在您的代码中,您尝试从Session变量中读取用户名和密码值。谁将用户名和密码设置为Session?您应该从已发布的表单中阅读这些内容并使用它。
[HttpPost]
public ActionResult Login(string userName,string password)
{
// do something with userName and password and return something
}
此外,您需要确保序列化表单,而不是单击按钮。我个人更喜欢使用Html帮助方法生成表单标记,并在我的javascript代码中使用表单的action属性值,而不是硬编码网址。
所以在我的剃刀视图中
@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表单提交,我建议您返回一个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);
}
})