【发布时间】:2021-06-30 12:26:51
【问题描述】:
我有一个简单的应用程序。
Index.cshtml 页面显示了一个登录页面,该页面绑定了用户模型。每当从 Index.cshtml 页面提交登录表单时,都会调用控制器 httppost 操作方法 Login,它只是查找正确的用户名和密码,如果用户存在,它只是将用户重定向到 Login.cshtml 视图,其中包含用户列表,如图所示下面:
索引 C# 代码:
public IActionResult Index() //simply return the login page view
{
return View();
}
Index.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 循环的第一次迭代中,它在浏览器中显示错误 localhost 当前无法处理此请求
我在启动类中也启用了开发者异常页面,但不会得到详细的错误。
Program.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>();
});
}
【问题讨论】:
-
您在“输出”窗口中没有看到任何异常?
-
ystem.InvalidOperationException:“Microsoft.AspNetCore.Mvc.ViewFeatures.Infrastructure.DefaultTempDataSerializer”无法序列化“NewChatApp.Models.User”类型的对象。我在输出窗口中看到了这个
-
问题在于登录方法中的 TempData。当我将用户对象存储在 TempData 中时,不确定为什么会发生错误。
标签: c# asp.net-core-mvc