无法获取要提交给数据库的信息

时间:2010-02-11 18:16:51

标签: asp.net asp.net-mvc database

我正在尝试制作一个简单的网络应用。我有一个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);
    }
}

有谁知道出了什么问题? 只是为了澄清,按下提交时,它再次加载表单。它不会重定向回索引。

2 个答案:

答案 0 :(得分:1)

是。您很可能需要在帖子上添加一个主键:

public ActionResult Create([Bind(Exclude="Id")] User user)

答案 1 :(得分:1)

您是否尝试在创建(用户用户)方法的开头在Visual Studio中插入断点,然后运行调试器?这是尝试找出在这种情况下发生的事情的好方法。

我有时发现我认为应该执行的方法甚至没有被调用 - 在这种情况下,永远不会达到断点。

如果达到了断点,则可以将鼠标悬停在代码中的变量上,以查看它们具有的值。