web-dev-qa-db-fra.com

ActionButton au lieu d'ActionLink

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?

23
Sachin Kainth

Y a-t-il un autre moyen?

Vous pouvez utiliser un code HTML <form>:

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

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" })
23
Flea

Cela semble très simple - quelque chose me manque-t-il?

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

Utilisez ceci:

@using (Html.BeginForm("yourAction", "yourController"))
{
    <input type="submit" value="Some text"/>
}
6
Jeow Li Huan
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" })
5
user2539146
@using (Html.BeginForm("ActionName", "ControllerName")){
   <input type="button" value="Submit" />
}
4
Curt

utiliser FORMACTION

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

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>    
2
Caitlin Everett

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>
2
Greg R Taylor

Je sais que c'est un sujet ancien, mais cela m'a aidé:

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

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.

2
Gabriel Baker

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.

0
Wade