2016-08-18 4 views
-2

Ich habe eine Website, wo ich die Benutzer entsprechend ihrer Rolle umleiten müssen. Bei einem Klick auf die Schaltfläche, wenn der Benutzer admin ist, Weiterleitung zu einer anderen Seite; sonst laden Sie die gleiche Seite neu. Beim Klicken auf die Schaltfläche wird die Indexseite geladen, unabhängig davon, wer sich anmeldet. Beim Debugging wurde festgestellt, dass das Attribut [HttpPost] überhaupt nicht ausgelöst wird.HttpPost nicht ausgelöst

Ausblick:

@model namespace.ViewModels.LoginVM 
@{ 
    ViewBag.Title = "Login"; 
} 

<h1>User Login</h1> 
@using (Html.BeginForm("Index", "Home", FormMethod.Post)) 
{ 
    <br /> 
    <div style="background-color: skyblue; width: 50%"> 
    <div style="padding-left: 1em"> 
     <div class="display-label" style="font-size: large"> 
      Enter User Info<br /> 
      <br /> 
     </div> 
     <div> 
      <div class="editor-label">@Html.LabelFor(model => model.empID)</div> 
      <div class="editor-field">@Html.TextBoxFor(model => model.empID) 
       @Html.ValidationMessageFor(model => model.empID) 
      </div> 
      <br /> 
     </div> 
     <br /> 
     <div> 
      <input id="submit" type="submit" value="Submit" /> 
     </div> 
    </div> 
    </div> 
    <br /> 
} 

Controller:

public class LoginController : Controller 
{ 
    [HttpGet] 
    public ActionResult Login() 
    {   
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Login(LoginVM model) 
    { 
     MySQL msql = new MySQL();    
     var empID= model.empID 
     var role = msql.Select("Select `role` from empDB where `eID` = '" + empID + "'"); 
     if(role == "admin") 
     { 
      return RedirectToAction("Index","Home"); 
     } 
     else 
     { 
      return View(); 
     }    
    } 
} 
+0

Wenn Sie dies debuggen, wie schlägt es fehl? Wie wird die Datenbankabfrage ausgeführt? Wie wird das Ergebnis in 'role' gespeichert? – David

+0

Egal, welche 'empID' ich eingeben, mein Code überprüft nicht, ob es 'Rolle' ist, der Benutzer wird auf die' index'-Seite umgeleitet. Mein Code fragt die 'empID' ab und speichert die Rolle der 'empID', die in die Variable' role' eingegeben wurde. –

+1

'" Mein Code prüft nicht auf seine Rolle "' - Also wird diese ganze Methode * überhaupt nicht ausgeführt *? Was wird dann * ausgeführt? Wo ist das * eigentliche Problem *? Sie müssen spezifisch sein, niemand kann hier für Sie debuggen. – David

Antwort

0

Ihre Httppost Aktion Methodenname ist Login. Aber deine Rasierblick, du benutzt Index!

Aktualisieren Sie den Methodenaufruf Html.BeginForm, damit der Name der richtigen Aktionsmethode und der Name des Controllernamens angezeigt werden. Wenn Sie dann auf Senden klicken, werden die Formulardaten an /Login/Login

gesendet.
+0

Ich verstehe. Ich habe die Änderungen vorgenommen, immer noch nicht funktioniert. –

+0

Was passiert, wenn Sie auf den Absenden-Button klicken? Veröffentlichen Sie die Formulardaten nicht in Ihrer HTTP-Post-Aktionsmethode? – Shyju

+0

Ja, es leitet mich auf die gleiche Seite um. Es scheint, dass 'HttpPost' nicht ausgelöst wird, wenn der Button gedrückt wird. –