Je veux créer un bouton qui, lorsqu'il est cliqué, appelle une action. J'ai utilisé Html.ActionLink
pour créer un lien qui fait exactement cela, mais il n'y a pas de Html.ActionButton
. Y a-t-il un autre moyen?
Y a-t-il un autre moyen?
Vous pouvez utiliser un code HTML <form>
:
@using (Html.BeginForm("someAction", "someController"))
{
<button type="submit">OK</button>
}
Voici un exemple d'utilisation du bouton CSS de Bootstrap et de son application au lien pour le rendre identique au bouton.
@Html.ActionLink("Select", "Select", new { id = patient.Id }, new { @class = "btn btn-primary", @style = "color:white" })
Cela semble très simple - quelque chose me manque-t-il?
@Html.ActionLink("About", "About","Home", new { @class = "btn btn-success" })
Utilisez ceci:
@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" />
}
utiliser FORMACTION
<input type="submit" value="Delete" id="delete" formaction="@Url.Action("Delete", new { id = Model.Id })" />
Vous pouvez écrire un lien vers le contrôleur et voir de cette façon/ignorer la notation complète du rasoir (travaillé pour moi récemment sur mon hôte local!):
<a href="../Home(controller)/Index(view)"><button type="submit">OK</button></a>
Parfois, votre bouton peut avoir un marquage imbriqué (par exemple pour une icône)
Cela pourrait être utile à certaines personnes:
<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 est nécessaire pour empêcher la page de se soumettre ... Une autre solution possible (si vous pensez que le type = button a l'air bizarre car l'élément est déjà un bouton) consiste à appeler event.preventDefault () dans le gestionnaire 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>
Je sais que c'est un sujet ancien, mais cela m'a aidé:
@Html.ActionLink("New member", "Create", null, new {@class = "btn btn-default"})
Ceci devrait répondre à votre question.
Puis-je utiliser un asp: Button comme un Html.ActionLink?
Utilise CSS pour que le lien ressemble à un bouton.
Ou utilisez le bouton à l'intérieur du formulaire avec les contrôles de formulaire déplaçant la page.
Pour ceux d'entre vous qui tentent de faire ressembler une balise d'ancrage à un bouton dans Bootstrap v3 (peut-être aussi v4), gardez à l'esprit qu'il existe certaines différences de style subtiles en ce qui concerne la marge qui amorce les cibles à l'élément Input et non à l'élément A. Cela peut être un peu frustrant lorsque vous essayez de placer plusieurs boutons les uns à côté des autres.
Il existe une raison assez évidente pour laquelle MVC n’a pas d’aide ButtonLink: réfléchissez-y. Les boutons ne sont liés à rien. Ils courent le code. Alors quel code l'assistant rendrait-il? Je veux dire que cela semble simple: il pourrait simplement rendre quelque chose comme onclick = "window.location =/controller/method ..." mais, est-ce vraiment ce que vous voulez? Est-ce ce que tout le monde veut toujours? N'est-ce pas vraiment juste faire un GET? Cela devient un peu maladroit.
Donc, vraiment, si vous voulez un bouton qui ouvre un lien, le moyen le plus simple est de faire ce que tout le monde a suggéré et de donner à une balise A l’apparence d’un bouton, puis d'aller probablement dans votre feuille de style et de faire une cible très spécifique de vos ancres de boutons. pour obtenir le même style que les boutons réels. Ou utilisez une balise Input et forcez Razor (ou autre) à rendre le lien en ligne avec votre JavaScript.