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



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



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


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

481   16  

16 ответов:

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

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

Razor синтаксис здесь:

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

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

Вы можете использовать Url.Действие для указания создать 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>

попробуйте это:

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

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

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

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

Это как вы можете subbmit вашу форму к специфическому методу регулятора и действия в бритве.

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

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

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

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

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

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

return View("Index");

или

return RedirectToAction("Index");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.