我正在尝试制作一个简单的网络应用。我有一个User表,它只是一个id,名称,密码和电子邮件。 id是一个计数器,因此自动分配。我有一个用户/创建操作,将用户添加到数据库。他们填写姓名,密码和电子邮件,然后点击提交。
我的问题是该字段没有提交,而且更奇怪的是,它与“Entry”控制器完全相同的代码并且工作正常..
代码:
public interface IUserRepository {
IQueryable<User> FindAllUsers();
User GetUser(int id);
void Add(User user);
void Update(User user);
void Delete(User user);
}
...
public void Add(User user) {
db.Users.InsertOnSubmit(user);
db.SubmitChanges();
}
...
public ActionResult Create()
{
return View();
}
//
// POST: /User/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(User user)
{
if(ModelState.IsValid){
try
{
_repository.Add(user);
return RedirectToAction("Index");
}
catch
{
return View(user);
}
}
else
{
return View(user);
}
}
有谁知道出了什么问题? 只是为了澄清,按下提交时,它再次加载表单。它不会重定向回索引。
答案 0 :(得分:1)
是。您很可能需要在帖子上添加一个主键:
public ActionResult Create([Bind(Exclude="Id")] User user)
答案 1 :(得分:1)
您是否尝试在创建(用户用户)方法的开头在Visual Studio中插入断点,然后运行调试器?这是尝试找出在这种情况下发生的事情的好方法。
我有时发现我认为应该执行的方法甚至没有被调用 - 在这种情况下,永远不会达到断点。
如果达到了断点,则可以将鼠标悬停在代码中的变量上,以查看它们具有的值。