我正在我的大学项目,使用两个表的数据库:Role
和User
。Users.RoleId
是引用Role.Id
的外键,我使用脚手架模板“MVC Model with views using Entity Framework”为每个表/模型类生成了Controller,因此RolesControler.cs
和UsersControler.cs
几乎相同。
我可以创建,编辑或删除角色使用不同的视图,可以看到here。正如你所看到的,新的角色is inserted into the database。
虽然尝试使用为UsersController.cs
指定的视图做确切的事情,但我不能添加或修改用户。我填写了所有输入,但提交不会给予任何结果,页面不刷新(没有重定向到index.cshtml
),没有数据被添加到数据库,只是什么也没发生,I can click "Create" button forever.我尝试在SQL Server对象资源管理器中使用SQL查询手动添加用户,它们出现在列表中。有趣的是,我可以使用Delete
方法删除它们。重定向到主页并从数据库中删除记录。
此外,在尝试创建新用户时,我只能选择已经存在的角色(这是预期的),但这表明User.RoleId
和Role.Id
之间的引用已正确完成。
以下是UsersControler.cs
中Create
方法的代码:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Name,Surname,DateOfBirth,Login,RoleId,IsDeleted")] User user)
{
if (ModelState.IsValid)
{
_context.Add(user);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["RoleId"] = new SelectList(_context.Roles, "Id", "Id", user.RoleId);
return View(user);
}
我真的不知道为什么Role
表/模型一切正常,但当涉及到User
时,我只能删除数据库中已经存在的记录。
**EDIT:**我尝试使用无效的日期(年份32121)和validation error occurs插入新用户,对我来说,这表示提交按钮会React并验证输入数据,但如果有效,它不会将记录插入数据库,也不会重定向到索引页。
1条答案
按热度按时间bqjvbblv1#
我可以问一下
Role
和User
的模型类是什么样的吗?我怀疑你们的数据类型不匹配。我有一个和你们几乎相似的问题,只是我甚至不能输入外键