2016-08-18 117 views
-2

我有一個網站,我需要根據他們的角色重定向用戶。點擊按鈕時,如果用戶是管理員,則重定向到另一個頁面;否則重新加載相同的頁面。在按鈕點擊時,無論登錄誰都會加載索引頁。在調試時發現,[HttpPost]屬性根本沒有被觸發。HttpPost沒有被觸發

查看:

@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 /> 
} 

控制器:

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

當你調試這個,它是如何失敗?什麼是數據庫查詢正在執行? 「角色」中存儲的結果是什麼? – David

+0

無論我輸入什麼'empID',我的代碼都不會檢查它的'角色',用戶會被重定向到'index'頁面。我的代碼查詢'empID'並將輸入'empID'的角色存儲到變量'role'中。 –

+1

'「我的代碼沒有檢查它的作用」 - 所以這個完整的方法並沒有被執行*那麼,*正在執行什麼? *實際問題*在哪裏?您需要具體說明,沒有人可以爲您進行調試。 – David

回答

0

你HttpPost action方法名是Login。但是您的剃鬚刀視圖,您使用了索引!

更新您的Html.BeginForm方法調用以獲取正確的操作方法名稱和控制器名稱值。然後,當你點擊提交,它會張貼表格數據到/Login/Login

@using (Html.BeginForm("Login", "Login", FormMethod.Post)) 
{ 

} 
+0

我明白。我做了修改,仍然沒有工作。 –

+0

點擊提交按鈕時發生了什麼?它是不是將表單數據發佈到你的http post action方法? – Shyju

+0

是的,它將我重定向到同一頁面。看起來'HttpPost'沒有被點擊提交按鈕。 –