2017-07-24 4 views
0

J'ai une page de connexion que les utilisateurs peuvent utiliser pour se connecter, j'ai défini sa méthode dans le contrôleur comme HttpPost, quand j'essaie d'y accéder depuis le navigateur, il ne montre aucun fichier trouvé , si je supprime l'attribut HttpPost il frappe le contrôleur et le retour view.Eventhough passer les valeurs sous la forme de contrôleur si je ne mentionnais son type comme HttpPost .Voici mon code de Connexion/SignIn.cshtml:Impossible d'appeler une méthode si j'ai mentionné son attribut comme HttpPost

@model BOL.Player_Access 
@using (Html.BeginForm("SignIn","Login",FormMethod.Post)){ 
@Html.AntiForgeryToken() 
<div class="form-horizontal"> 
    <h4>Sign In</h4> 
    <hr /> 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    <div class="form-group"> 
     @Html.LabelFor(model => model.PlayerEmail, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.PlayerEmail, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.PlayerEmail, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.Password, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="SignIn" class="btn btn-default" /> 
     </div> 
    </div> 
</div> 

Et mon code LoginController est ici

[AllowAnonymous] //This filter removes authorize filter for this controller alone and allow anonyomous request 
public class LoginController : Controller 
{ 
    // GET: Login 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult SignIn(Player_Access plyr_obj) 
    { 
     return View(); 
    } 
} 
+0

Affichez votre code complet. Accolades de fin manquant. –

Répondre

3

Vous avez besoin de code pour GET et POST.

Vous avez besoin d'une action GET pour montrer la forme qui sera POST'ée

public ActionResult SignIn() 
{ 
    return View(); 
} 

Cela montrera la vue SignIn.

Ensuite, vous avez besoin d'une action POST pour prendre les valeurs du formulaire et les envoyer au contrôleur.

[HttpPost] 
public ActionResult SignIn(Player_Access plyr_obj) 
{ 
    //do some work to authenticate the user 

    return View(); 
} 
+0

, cela fonctionne ..Merci.Mais est-ce la bonne façon d'accomplir ce frère, je peux le réaliser en une seule fonction? J'ai vu dans un didacticiel vidéo, ils ont utilisé une seule méthode d'action à la fois pour afficher les données et montrer la forme en une seule action.Toute idée sur la façon dont ils l'ont réalisé bro, A fait MVC Prend en charge cette fonctionnalité dans les anciennes versions? – ArunKumar

+0

Je ne connais aucune version de MVC qui "supporte" la sémantique de show/post unique. Dans les cas les plus triviaux qui peuvent fonctionner, mais une fois que vous commencez à afficher des propriétés sur la page qui ne sont pas postées, comme les listes de sélection, il se décompose. – Fran

+0

également étudier le modèle PRG. Une fois que vous postez, vous devez rediriger vers un Get Get ou un Index afin que vous ne puissiez pas poster plusieurs fois d'affilée par accident. Voici une bonne explication https://www.stevefenton.co.uk/2011/04/asp-net-mvc-post-redirect-get-pattern/ – Fran