Как мне вызвать функцию в моем контроллере с помощью кнопки на моей .cshtml-странице? - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь создать панель управления / графический интерфейс для управления. Как я могу создать кнопки, которые вызывают определенные функции из контроллера? Он находится в ASP.NET CORE 3 с использованием MVC-шаблона.

Что я хочу сделать в приложении, так это выполнить код c #, вызвав метод из моей страницы Index.cshtml и передав параметры.

Я пробовал несколько решений, а именно те, которые утверждают, что представление и контроллер синхронизируются с функцией контроллера, ищущей представление с одинаковым именем, но оно просто не работает.

Редактировать: Нашел решение: мне нужно было указать и контроллер, и ActionResult.

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

Я был явно недостаточно умен, чтобы читать бесчисленные учебники. Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

, поскольку вы хотите запускать функцию только одним щелчком мыши и передавать некоторые данные, я рекомендую вам сделать ajax-вызов на сервер, используя java-скрипт или jquery - более эффективный способ. это будет выглядеть так

$('#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>
0 голосов
/ 20 октября 2019

Если вы хотите отправить часть данных после нажатия кнопки на сервер, вы должны создать форму в своем представлении и действие после публикации в вашем контроллере. Однако, если вы не хотите публиковать какие-либо данные и хотите просто что-то делать после нажатия кнопки, создайте действие get в вашем контроллере и перейдите к этому пути действия, используя событие нажатия кнопки. Наконец, вы можете вернуть ту же страницу на вашем действии и делать то, что вы хотите, до этого. Используйте атрибут [httpGet("path")] поверх любой публичной функции вашего контроллера, чтобы пометить его как действие. Затем вы можете вызвать его в HTML, используя что-то вроде этого <a asp-action="path">sth</a>

...