2016-11-11 1 views
1

Je voudrais savoir comment créer une simple action de bouton, dans l'application Web principale de MVC 6 avec bootstrap. Pour que je puisse par exemple exécuter une procédure stockée sql, ou simplement récupérer une date du serveur, ou récupérer quelque chose d'autre par le code du serveur sur demande, et l'afficher dans une zone de texte. J'aime particulièrement connaître le code minimal sans décorations fantaisie.syntaxe correcte pour le serveur runat un bouton avec MVC 6. NET core et bootstrap

<asp:??? input type="button" runat="server" onclick="btn_Click" class="btn btn-default"> 

ou peut-être

<div> 
<button type="button" class="btn btn-default" runat="server" onclick="btn_Click"> 
</div> 

son peut-être une question simple mais je confonds sur la façon dont il devrait être fait dans MVC-6 et non dans les anciennes versions ou pages asp

Répondre

2

Ce n'est pas appelé MVC 6 plus. C'est maintenant ASP.NET Core 1.0. Runat = "server" n'est pas utilisé dans ASP.NET Core 1.0 car il ne prend pas en charge les formulaires Web mais s'appuie plutôt sur le paradigme MVC. Pour la même raison, il n'y a pas d'attribut onclick non plus.

Vous bouton peut ressembler à:

<button type="submit" class="btn btn-default">Click Here</button> 

Et la méthode d'action sur le contrôleur pourrait ressembler à:

[HttpPost] 
    public IActionResult Post() { 
     /*do work here*/ 

     return View(); 
    } 



Exemple complet

Dans le comme Vous avez demandé un exemple de comment on peut dire quel bouton a été cliqué s'il y avait plusieurs boutons sur le formulaire. Voici un exemple:

/Views/example/index.cshtml

<html> 
    <body> 
     <form asp-controller="example" asp-action="Index"> 
      <label>Value:</label><input name="someValue" type="text" maxlength="10" /> 
      <button name="btnOne" type="submit" class="btn btn-default">Click One</button> 
      <button name="btnTwo" type="submit" class="btn btn-default">Click Two</button> 
     </form> 
    </body> 
</html> 

/Controllers/example/ExampleController.cs

using Microsoft.AspNetCore.Mvc; 

namespace App.Web.Controllers { 

    public class ExampleController: Controller { 

     public ExampleController() { 

     } 

     [HttpGet] 
     [Route("/example/")] 
     public IActionResult Index() { 
      return View(); 
     } 


     [HttpPost] 
     [Route("/example/")] 
     public IActionResult Index(string someValue) { 
      string buttonClicked = ""; 


      if(HttpContext.Request.Form.ContainsKey("btnOne")) { 
       buttonClicked = "btnOne"; 
      } else if(HttpContext.Request.Form.ContainsKey("btnTwo")) { 
       buttonClicked = "btnTwo"; 
      } 

      return View("Index"); 
     } 

    } 
} 

Vous pouvez en savoir plus sur formes dans ASP.NET Core ici: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms
Ils sont incroyablement flexibles par rapport à w ebforms mais la courbe d'apprentissage est un peu plus raide au début.

+0

intéressant, donc il n'y a pas de runat = serveur mais c'est le redirecteur qui prend cette tâche en accrochant (IActionresult Post) [HttpPost]. Alors je me demande si vous avez plusieurs boutons pour différentes actions comment pourriez-vous détecter celui qui a été pressé dans votre exemple? – user3800527

+0

Généralement, le nom de la méthode d'action reflète le nom de la vue traitée, dans ce cas Post, de sorte qu'elle reste généralement fixe pour la vue (alias page). Donc, pour savoir quel bouton a été cliqué, vous donnez généralement un nom à votre bouton via l'attribut de nom du bouton, ce nom sera ensuite retourné avec le reste des données du formulaire et vous pourrez vérifier la présence de ce nom dans les données affichées. le bouton a été cliqué. –

+0

Merci, j'apprends le noyau asp.net mais trouve difficile de comprendre ce concept, savez-vous peut-être peut-être un petit échantillon où il est montré ce que vous venez de décrire dans votre dernier commentaire? – user3800527