ActionButton вместо ActionLink

Я хочу создать кнопку, которая при нажатии вызывает действие. Я использовал Html.ActionLink для создания ссылки, которая делает именно это, но нет Html.ActionButton. Есть ли другой способ?

Ответ 1

Есть ли другой способ?

Вы можете использовать html <form>:

@using (Html.BeginForm("someAction", "someController"))
{
    <button type="submit">OK</button>
}

Ответ 2

Вот пример использования кнопки Bootstrap CSS и применения ее к ссылке, чтобы она выглядела точно так же, как кнопка.

@Html.ActionLink("Select", "Select", new { id = patient.Id }, new { @class = "btn btn-primary", @style = "color:white" })

Ответ 3

Это кажется очень простым - я что-то упускаю?

@Html.ActionLink("About", "About","Home", new { @class = "btn btn-success" })

Ответ 4

Использовать это:

@using (Html.BeginForm("yourAction", "yourController"))
{
    <input type="submit" value="Some text"/>
}

Ответ 5

a[type="button"] {
    background-color: #d3dce0;
    border: 1px solid #787878;
    cursor: pointer;
    font-size: 1.2em;
    font-weight: 600;
    padding: 7px;
    margin-right: 8px;
    width: auto;
    text-decoration: none;
}

@Html.ActionLink("ActionName", "ControllerName",null, new {type = "button" })

Ответ 6

@using (Html.BeginForm("ActionName", "ControllerName")){
   <input type="button" value="Submit" />
}

Ответ 7

Иногда ваша кнопка может иметь вложенную разметку (например, для значка)

Это может быть полезно для некоторых людей:

<button type="button" onclick="location.href='@Url.Action("Action", "Controller")'" class="btn btn-success">My button name <i class="glyphicon glyphicon-search"></i></button>

type = button требуется для предотвращения отправки страницы... Еще одно возможное решение (если вы думаете, что кнопка type = выглядит странно, потому что элемент уже является кнопкой), нужно было бы вызвать event.preventDefault() в обработчике javascript OnClick.

<button onclick="event.preventDefault(); location.href='@Url.Action("Action", "Controller")'" class="btn btn-success">My button name <i class="glyphicon glyphicon-search"></i></button>

Ответ 8

Это должно ответить на ваш вопрос.

Можно ли использовать asp: Button, как Html.ActionLink?

Использует CSS, чтобы ссылка выглядела как кнопка.

Или используйте кнопку внутри формы с помощью элементов управления формы, перемещающих страницу.

Ответ 9

Вы можете написать ссылку на контроллер и просмотреть этот путь/пропустить всю нотацию бритвы (работал для меня недавно на моем локальном хосте!):

<a href="../Home(controller)/Index(view)"><button type="submit">OK</button></a>    

Ответ 10

использовать ФОРМАТ

<input type="submit" value="Delete" id="delete" formaction="@Url.Action("Delete", new { id = Model.Id })" />

Ответ 11

Я знаю, что это старая тема, но это помогло мне:

@Html.ActionLink("New member", "Create", null, new {@class = "btn btn-default"}) 

Ответ 12

Тем из вас, кто пытается сделать тег привязки похожим на кнопку в Bootstrap v3 (может быть, и v4), следует помнить, что существуют некоторые тонкие различия в стилях полей, которые загружают цели для элемента Input, а не для элемента A. Это может немного расстраивать при попытке поставить несколько кнопок рядом друг с другом.

Существует довольно очевидная причина, по которой у MVC нет помощника ButtonLink: подумайте об этом. Кнопки ни на что не ссылаются. Они запускают код. Так какой код будет делать помощник? Я имею в виду, что кажется простым, что он может просто визуализировать что-то вроде onclick = "window.location =/controller/method...", но действительно ли это то, что вы хотите? Это то, что все всегда хотят? Разве это не просто делает GET? Это становится глупо.

Так что, на самом деле, если вам нужна кнопка, которая открывает ссылку, самый простой способ - это сделать то, что другие предложили, и оформить тег A так, чтобы он выглядел как кнопка, но затем, вероятно, зайдите в таблицу стилей и сделайте очень конкретную цель для привязок кнопок. чтобы получить тот же стиль, что и реальные кнопки. Или используйте тег Input и заставьте Razor (или что-либо еще) сделать ссылку встроенной в ваш JavaScript.

Ответ 13

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

вам нужно использовать "null" перед новым {}, как показано ниже:

@Html.ActionLink("About", "Action Name","Controller Name",null, new { @class = "btn btn-success" })

Обратите внимание на ноль выше. Это важно!!!