2016-08-18 112 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'没有被点击提交按钮。 –