c# - ASP.NET Core MVC- localhost 当前无法处理此请求
问题描述
我有一个简单的应用程序。
Index.cshtml 页面显示了一个登录页面,该页面绑定了用户模型。每当从 Index.cshtml 页面提交登录表单时,都会调用控制器 httppost 操作方法 Login,它只是查找正确的用户名和密码,如果用户存在,它只是将用户重定向到 Login.cshtml 视图,其中包含用户列表,如图所示以下:
索引 C# 代码:
public IActionResult Index() //simply return the login page view
{
return View();
}
索引.cshtml
@model NewChatApp.Models.User
<div class="wrapper fadeInDown">
<div id="formContent" class="mt-5">
<form method="post" class="mt-5" asp-action="Login">
<input hidden="hidden" asp-for="Id" />
<input hidden="hidden" asp-for="Name" />
<input type="text" class="fadeIn second" placeholder="login" asp-for="Username">
<input type="text" class="fadeIn third" placeholder="password" asp-for="Password">
<input type="submit" class="fadeIn fourth mt-3" value="Log In">
</form>
</div>
登录 C# 代码:
[HttpPost]
public IActionResult Login(User user)
{
UserProvider userProvider = new UserProvider();
User user1 = userProvider.CreateUsersList().Where(x => x.Username == user.Username && x.Password == user.Password).FirstOrDefault();
TempData["CurrentUser"] = user1;
if (user1 == null)
{
ViewData.Clear();
return View("Index");
}
List<User> users = userProvider.CreateUsersList().Where(x => x.Id != user1.Id).ToList();
return View(users);
}
Login.cshtml 代码
@model IEnumerable<NewChatApp.Models.User>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="col-md-3">
<table class="table">
<thead>
<tr>
<th>
FRIENDS
</th>
</tr>
</thead>
<tbody>
@foreach (User item in Model)
{
<tr>
<td>
<button class="btn btn-link">@item.Name</button>
</td>
</tr>
}
</tbody>
</table>
当我调试代码时。我看到我在登录方法和登录方法中成功获取了用户模型,然后将三个用户的列表返回到登录视图。在 foreach 循环的登录视图中,当我遍历用户记录时,在 foreach 循环的第一次迭代中,它在浏览器中显示本地主机当前无法处理此请求的
错误
我在启动类中也启用了开发人员异常页面,但不会得到详细错误。
程序.cs
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
解决方案
按照弗兰克在评论中的指示查看输出窗口后,我发现问题在于将用户对象存储在 TempData 中。我删除了那条线,一切都开始工作了。
更新了登录 C# 代码:
[HttpPost]
public IActionResult Login(User user)
{
UserProvider userProvider = new UserProvider();
User user1 = userProvider.CreateUsersList().Where(x => x.Username == user.Username && x.Password == user.Password).FirstOrDefault();
if (user1 == null)
{
ViewData.Clear();
return View("Index");
}
List<User> users = userProvider.CreateUsersList().Where(x => x.Id != user1.Id).ToList();
return View(users);
}
推荐阅读
- angular - TypeError:无法读取未定义的 jasmine-karma 的属性“fetchData”
- gcc - 通过 LD_PRELOAD 替换 memcpy@glibc_2.14
- typescript - Angular - 如何在没有 fs 的情况下检查文件是否存在
- c - 递归函数C乘以4问题
- mysql - 获取上周每一天的记录数。如果在特定日期没有找到记录,那么我想要 0 作为记录
- sql-server - SQL 2014 窗口 10
- sql - 即使在 SQL 中遵循 Microsoft 格式后也会出错
- workflow - 在活动中可以进行自我转换
- javascript - 地图循环reactjs中的鼠标悬停
- python - 样本数量不一致的 Python Sklearn 变量