【问题标题】:How do I call a function in my controller from a button in my .cshtml-page?如何从 .cshtml 页面中的按钮调用控制器中的函数?
【发布时间】:2019-10-19 22:57:22
【问题描述】:

我正在尝试创建用于管理目的的仪表板/图形界面。如何创建从控制器调用某些功能的按钮?它在 ASP.NET CORE 3 中,使用 MVC 模式。

我想要在应用程序中做的是通过从我的 Index.cshtml 页面调用方法并传递参数来执行 c# 代码。

我尝试了多种解决方案,即那些声明视图和控制器与寻找“同名”视图的控制器功能同步但它不起作用的解决方案。

编辑:找到解决方案:我需要同时指定控制器和 ActionResult。

<form action="Home/Change" method="post">
            <input type="text" name="DoorID" placeholder="Guid.." />
            <br />
            <input type="submit" value="Post" />
        </form>

我显然不够聪明,无法阅读无数的教程。 感谢您的帮助!

【问题讨论】:

  • 欢迎堆栈溢出。请分享您的代码,即使它不起作用。我们希望在视图中看到您尝试执行的控制器操作以及您正在使用的 razor/javascript/ajax。
  • 刚刚编辑了帖子以显示代码,现在得到了解决方案。谢谢。

标签: c# asp.net-mvc .net-core view controller


【解决方案1】:

如果您想在单击按钮后向服务器发送一条数据,您应该在您的视图中创建一个表单并在您的控制器中创建一个发布操作。但是,如果您不想发布任何数据并且只想在单击按钮后做一些事情,请在控制器中创建一个 get 操作并使用按钮单击事件导航到该操作路径。最后,您可以在您的操作中返回相同的页面并事先做您想做的事情。 在控制器中的任何公共函数之上使用[httpGet("path")] 属性将其标记为操作。然后您可以使用类似&lt;a asp-action="path"&gt;sth&lt;/a&gt;

的方式在 HTML 中调用它

【讨论】:

  • 我刚刚找到了我正在寻找的解决方案,但这应该也可以,因为几天前我尝试使用 ButtonClickEvent 进行此操作。谢谢。
【解决方案2】:

因为您只想在 btn 单击时触发一个函数并传递一些数据,所以我建议您使用 java 脚本或 jquery 对后端进行 ajax 调用是更有效的方法。 它看起来像这样

$('#btn').click(function () {
		$.post( "your action url ", { name: "John", time: "2pm" } )
		.done(function(data)
		{
			// in case your action return some data it will be in the "data" variable 
		});
	});
<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<!-- you need to have jquery -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
	<title>Document</title>
</head>

<body>
	<input type="button" id="btn" value="click me ">
</body>

</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多