【发布时间】:2016-08-18 17:40:51
【问题描述】:
我有一个网站,我需要根据用户的角色在其中重定向用户。单击按钮时,如果用户是管理员,则重定向到另一个页面;否则重新加载同一页面。点击按钮,无论谁登录,都会加载索引页面。调试时发现,[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();
}
}
}
【问题讨论】:
-
当你调试这个时,它是怎么失败的?正在执行的数据库查询是什么?
role中存储的结果是什么? -
无论我输入什么
empID,我的代码都不会检查它是否为role,用户会被重定向到index页面。我的代码查询empID并将empID的角色输入到变量role中。 -
"my code doesn't check for it's role"- 所以整个方法根本没有被执行?那么正在执行什么? 实际问题在哪里?您需要具体,这里没有人可以为您调试。 -
目前尚不清楚您面临什么问题。您是否尝试在代码中放置断点并查看发生了什么?当断点命中时检查变量的值。
-
我的控制器从
[HttpGet]返回View()。它没有到达[HttpPost],即我的查询根本没有执行。
标签: asp.net-mvc-3 razor