Кнопка HTML, вызывающая контроллер MVC и метод действия

Я знаю, что это неправильно, но для иллюстрации я хотел бы сделать что-то вроде этого:

<%= Html.Button("Action", "Controller") %>

Моя цель - создать кнопку HTML, которая вызовет мой метод действия контроллера MVC.

Ответ 1

Не нужно использовать форму вообще, если вы не хотите публиковать сообщения в действии. Кнопка ввода (не отправить) сделает свое дело.

  <input type="button"
         value="Go Somewhere Else"
         onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />

Ответ 2

Синтаксис бритвы находится здесь:

<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />

Ответ 3

<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />

type = "button" предотвращает отправку страницы. вместо этого он выполняет ваше действие.

Ответ 4

Вы можете использовать Url.Action для указания генерации URL-адреса для действия контроллера, поэтому вы можете использовать одно из следующих значений:

<form method="post" action="<%: Url.Action("About", "Home") %>">
   <input type="submit" value="Click me to go to /Home/About" />
</form>

или

<form action="#">
  <input type="submit" onclick="parent.location='<%: Url.Action("About", "Home") %>';return false;" value="Click me to go to /Home/About" />
  <input type="submit" onclick="parent.location='<%: Url.Action("Register", "Account") %>';return false;" value="Click me to go to /Account/Register" />
</form>

Ответ 5

Попробуйте следующее:

@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)

Это должно сработать для вас.

Ответ 6

Основываясь на парах вышеупомянутых ответов, вы можете сделать это:

<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />

Ответ 7

Вот как вы можете отправить свою форму определенному контроллеру и методу действия в Razor.

 <input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />

Ответ 8

Элемент HTML <button> может только возвращать в форму, содержащую его.

Поэтому вам нужно сделать форму POSTs для действия, а затем поместить в форму <button> или <input type="submit" />.

Ответ 9

Если вы получаете сообщение об ошибке как "unterminated string constant", используйте следующий синтаксис бритвы:

<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />

Ответ 10

Когда вы реализуете действие в контроллере, используйте

return View("Index");

или

return RedirectToAction("Index");

где уже указана страница Index.cshtml(или страница, которая генерирует действие). В противном случае вы, вероятно, столкнетесь с ошибкой "представление или его хозяин не найден...".

Источник: https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/

Ответ 11

Несмотря на метод onclick, вы также можете использовать форматирование следующим образом:

<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>

Ответ 12

Итак, я использую Razor, но это будет работать и с. Я в основном обертываю кнопку в ссылке.

<a href="Controller/ActionMethod">
    <input type="button" value="Click Me" />
</a>

Ответ 13

лучше использовать этот пример

<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>

Ответ 14

Если вы находитесь на домашней странице ( "/Home/Index" ), и вы хотите вызвать действие "Индекс" администратора, следующий будет работать для вас.

<li><a href="/Admin/Index">Admin</a></li>

Ответ 15

ОК, вам в основном нужно передать действие кнопке и вызвать ее при нажатии, она не должна быть внутри, вы можете использовать HTML onclick on , чтобы вызвать его при нажатии кнопки ...

<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>

Ответ 16

лучше использовать этот пример.

Вызовите действие и контроллер с помощью ActionLink:

@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})

Ответ 17

Используйте этот пример:

<button name="nameButton" id="idButton" title="your title" class="btn btn-secondary" onclick="location.href='@Url.Action( "Index","Controller" new {  id = Item.id })';return false;">valueButton</button>

Ответ 18

Большинство ответов выше, возможно, уже сработали, к сожалению, ни один из них не сработал для меня Я нашел здесь полезный ответ из другого поста Stackoverflow! У меня это работало на ASP с dot net framework 4.7 mvc5 и начальной версией 3. * и конечно в Razor View. Основная цель вопроса, как я полагаю, состоит в том, чтобы показать ссылку, которая выглядит как кнопка.