这可能是一个微不足道的问题,我是一个新的蜜蜂:) 这是我的查看代码
<button type="button" id="btnLogin" onclick="location.href='<%: Url.Action("Authenticate", "Login") %>'" runat="server"></button>
这是我的控制器代码
public ActionResult Authenticate(string username,string password)
{
bool status = Login.Authenticate(username, password);
return View("Status", status);
}
我可以去那个控制器,但是我无法传递参数。可以让我知道将参数传递给控制器功能的仪式是什么。
完整视图代码
<table>
<tr>
<td>
<input type="text" id="txtUsername" runat="server" />
</td>
<td>
<input type="text" id="txtPassword" runat="server" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="button" id="btnLogin" onclick="location.href='<%: Url.Action("Authenticate", "Login") %>'" runat="server"></button>
</td>
</tr>
</table>
答案 0 :(得分:2)
你知道url动作有第三个参数,你可以在其中添加参数
@Url.Action("Authenticate", "Login" , new {name = "name"})
你只需要一种方法来增加你的价值
答案 1 :(得分:0)
使用发布到控制器中的Authenticate方法的<form>
。同时将<button>
更改为<input type="submit"
像这样:
<form method="post" action="@Href("~/account/authenticate")" id="LogOnForm">
.... @*input boxes*@
<input type="submit" value="Login"/>
</form>
编辑:对于ajax登录,请使用此脚本(需要jquery)。请注意,表单需要ID
<script type="text/javascript">
$(document).ready(function () {
$("#LogOnForm").submit(function (event) {
event.preventDefault();
$.ajax({
type: "POST",
url: '@Url.Content("~/account/authenticate")',
data: $("#LogOnForm").serialize(),
success: function (data) {
if (data.Status) {
//Logged in succesfully
} else {
//Login failed
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.responseText);
}
});
});
});
</script>
编辑:控制器修改:
public JsonResult Authenticate(string username,string password)
{
bool status = Login.Authenticate(username, password);
return Json( new @"Status", status);
}
答案 2 :(得分:0)
您可以使用其name
属性传递输入值。
<%using (Html.BeginForm("Authenticate", "Login"))
{%>
<table>
<tr>
<td>
<input type="text" id="txtUsername" name="username" />
</td>
<td>
<input type="text" id="txtPassword" name="password" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Login" class="submit_button"/>
</td>
</tr>
</table>
<%}%>
CONTROLLER
[HttpPost]
public ActionResult Authenticate(string username, string password)
{
bool status = Login.Authenticate(username, password);
return View("Status", status);
}
答案 3 :(得分:0)
您需要使用Javascript
将参数放入调用字符串中<script type="text/javascript">
function postdata(location) {
var url = '<%: Url.Action("Authenticate", "Login", new { username = XXX, password = YYY) %>';
var Username = document.getElementById(Username).value;
var Password= document.getElementById(Password).value;
url = url.replace("XXX", Username );
url = url.replace("YYY", Password);
location.href=url;
}
</script>
<button type="button" id="btnLogin" onclick="postdata()" runat="server"></button>
答案 4 :(得分:0)
输入字段中缺少名称属性。在您的用户名和密码输入框中添加名称属性。 name属性应与操作控制器参数相同。
<table>
<tr>
<td>
<input type="text" id="txtUsername" runat="server" name="username" />
</td>
<td>
<input type="text" id="txtPassword" runat="server" name="password"/>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="button" id="btnLogin" onclick="location.href='<%: Url.Action("Authenticate", "Login") %>'" runat="server"></button>
</td>
</tr>
</table>