Asp.net mvc Asp.Net MVC 5,视图未发回控制器
我正在使用Asp.NETMVC5创建一个简单的登录表单。一切正常,但当我在给出用户Id和密码后单击submit按钮时,视图不会返回到所需的控制器操作(登录)。行动如下:Asp.net mvc Asp.Net MVC 5,视图未发回控制器,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Razor,我正在使用Asp.NETMVC5创建一个简单的登录表单。一切正常,但当我在给出用户Id和密码后单击submit按钮时,视图不会返回到所需的控制器操作(登录)。行动如下: [HttpPost] public ActionResult LogIn(User user) { var auth_user = CheckAuthentication(user); if(auth_user!=null)
[HttpPost]
public ActionResult LogIn(User user)
{
var auth_user = CheckAuthentication(user);
if(auth_user!=null)
{
Session["user"] = new User() { UserId = user.UserId, Name = user.Name };
return RedirectToAction("Index", "User");
}
return View();
}
[AllowAnonymous]
public ActionResult LogIn()
{
return View();
}
以及以下观点:
@model FinancialManagement.Models.User
@{
ViewBag.Title = "LogIn";
}
<h2>LogIn</h2>
@using (Html.BeginForm("LogIn", "User", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>User</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.UserId, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.UserId)
@Html.ValidationMessageFor(model => model.UserId)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Password, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Log In" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
尝试指定视图的名称和模型,如下所示:
return View("NameOfView", YourModel);
如果它不起作用,请放置绝对路径:
return View("~/Views/FolderName/ViewName.cshtml");
你的控制器名是什么?您说过“不会返回到所需的控制器操作”,您的意思是它是否会返回到其他控制器/操作,以及单击“提交”后到底发生了什么?它是在同一页上吗?还要检查浏览器控制台中是否有客户端错误。控制器名称为“User”,与调用视图的位置相同。您是否在操作中检查断点以查看是否找到该用户?根据您发布的代码,如果用户未找到相同的视图,则该视图将呈现刷新。因此,如果找不到用户,请返回您收到的要查看的
user
模型。您的视图中的类型是否正确您有“FinancialManagement.Models.user”我猜您控制器中的用户是身份用户类型提交表单时,您显示的代码将点击Login()
post方法。但它永远不会转到Index()
方法(或任何其他标记为[Authorize]
的方法),因为LogIn()
方法中的代码不授权用户。以纯文本形式存储密码是一种可怕的做法!问题是从视图返回到控制器。而不是从控制器查看
return View("~/Views/FolderName/ViewName.cshtml");