我的问题是我想从此模板添加一个按钮: https://designreset.com/cork-admin-v1/ltr/demo3/element_buttons.html
如果我点击一个按钮,我想在控制器上运行一个功能,我该怎么做? 已经用这样的代码尝试过:
<button type="button" onclick='[email protected]("redirect","Login")'" class="btn btn-info mb-2">Info</button>
这不起作用。我也用 javascript 尝试过,这可行,但我不认为这是最好的方法。
<span onclick="login()" class="btn btn-primary" value="">Log In</span>"
<script>
function login() {
let userName = $('.userName').val();
let password = $('.password').val();
$.ajax({
url: '/login/login?userName=' + userName + '&&password=' + password,
type: 'POST',
contentType: 'application/json; charset=utf-8',
success: function (data) {
console.log(data);
alert(data);
window.location.href = "/login/home";
},
error: function (resp) {
alert(resp);
console.log(resp);
}
});
}
</script>
有人可以告诉我我是否真的需要用 javascript 来做到这一点吗? 或者我可以直接调用控制器动作吗?如果可以,怎么调用?
编辑:
使用以下代码似乎可以工作:
<button type="submit" asp-action="redirect" class="btn btn-info mb-2">Info</button>
对于 ASP.NET MVC 5 尝试使用此方法:
<button type="button" onclick="window.location='@Url.Action("ActionName", "ControllerName")'" class="btn btn-info mb-2">Info</button>
对于 ASP.NET Core,您的代码是正确的,
<button type="submit" asp-action="redirect" asp-controller="ControllerNameHere" class="btn btn-info mb-2">Info</button>
还可以指定其他详细信息,例如在控制器上传递值:
<button type="submit" asp-action="redirect" asp-controller="ControllerNameHere" asp-route-AnyId="@Model.AnyId" class="btn btn-info mb-2">Info</button>
小威利大卫的代码:
<button type="button" onclick="window.location='@Url.Action("ActionName", "ControllerName")'" class="btn btn-info mb-2">Info</button>
适用于我使用 .Net Core 版本 8.0.200。它也有轻微的变化(在原始问题中提到):
<button type="button" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" class="btn btn-info mb-2">Info</button>
还可以通过附加 id(在本例中由变量 @yourid 包含)来扩展传递给控制器的 URL,以包含 id(由 Program.cs 中的路由定义):
<button type="button" onclick="location.href='@Url.Action("ActionName", "ControllerName")/@yourid'" class="btn btn-info mb-2">Info</button>