Ответ 1
Есть ли другой способ?
Вы можете использовать html <form>
:
@using (Html.BeginForm("someAction", "someController"))
{
<button type="submit">OK</button>
}
Я хочу создать кнопку, которая при нажатии вызывает действие. Я использовал Html.ActionLink
для создания ссылки, которая делает именно это, но нет Html.ActionButton
. Есть ли другой способ?
Есть ли другой способ?
Вы можете использовать html <form>
:
@using (Html.BeginForm("someAction", "someController"))
{
<button type="submit">OK</button>
}
Вот пример использования кнопки Bootstrap CSS и применения ее к ссылке, чтобы она выглядела точно так же, как кнопка.
@Html.ActionLink("Select", "Select", new { id = patient.Id }, new { @class = "btn btn-primary", @style = "color:white" })
Это кажется очень простым - я что-то упускаю?
@Html.ActionLink("About", "About","Home", new { @class = "btn btn-success" })
Использовать это:
@using (Html.BeginForm("yourAction", "yourController"))
{
<input type="submit" value="Some text"/>
}
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" })
@using (Html.BeginForm("ActionName", "ControllerName")){
<input type="button" value="Submit" />
}
Иногда ваша кнопка может иметь вложенную разметку (например, для значка)
Это может быть полезно для некоторых людей:
<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>
Это должно ответить на ваш вопрос.
Можно ли использовать asp: Button, как Html.ActionLink?
Использует CSS, чтобы ссылка выглядела как кнопка.
Или используйте кнопку внутри формы с помощью элементов управления формы, перемещающих страницу.
Вы можете написать ссылку на контроллер и просмотреть этот путь/пропустить всю нотацию бритвы (работал для меня недавно на моем локальном хосте!):
<a href="../Home(controller)/Index(view)"><button type="submit">OK</button></a>
использовать ФОРМАТ
<input type="submit" value="Delete" id="delete" formaction="@Url.Action("Delete", new { id = Model.Id })" />
Я знаю, что это старая тема, но это помогло мне:
@Html.ActionLink("New member", "Create", null, new {@class = "btn btn-default"})
Тем из вас, кто пытается сделать тег привязки похожим на кнопку в Bootstrap v3 (может быть, и v4), следует помнить, что существуют некоторые тонкие различия в стилях полей, которые загружают цели для элемента Input, а не для элемента A. Это может немного расстраивать при попытке поставить несколько кнопок рядом друг с другом.
Существует довольно очевидная причина, по которой у MVC нет помощника ButtonLink: подумайте об этом. Кнопки ни на что не ссылаются. Они запускают код. Так какой код будет делать помощник? Я имею в виду, что кажется простым, что он может просто визуализировать что-то вроде onclick = "window.location =/controller/method...", но действительно ли это то, что вы хотите? Это то, что все всегда хотят? Разве это не просто делает GET? Это становится глупо.
Так что, на самом деле, если вам нужна кнопка, которая открывает ссылку, самый простой способ - это сделать то, что другие предложили, и оформить тег A так, чтобы он выглядел как кнопка, но затем, вероятно, зайдите в таблицу стилей и сделайте очень конкретную цель для привязок кнопок. чтобы получить тот же стиль, что и реальные кнопки. Или используйте тег Input и заставьте Razor (или что-либо еще) сделать ссылку встроенной в ваш JavaScript.
Убедитесь, что вы используете правильную перегрузку, иначе вы будете перенаправлены на неправильный контроллер.
вам нужно использовать "null" перед новым {}, как показано ниже:
@Html.ActionLink("About", "Action Name","Controller Name",null, new { @class = "btn btn-success" })
Обратите внимание на ноль выше. Это важно!!!