如何重定向到具有尚不存在的ID的页面?

时间:2011-10-13 22:32:19

标签: c# asp.net-mvc-3 entity-framework-4.1 ef-code-first

基本上,我有一个将表单保存到数据库的操作,然后将用户重定向到列表。从该列表中,用户可以选择一些操作。

其中一个动作是必不可少的,我希望用户在创建对象后直接传递到此直接,但是,由于第一个对象的ID尚不存在,我不知道如何传递ID通过

例如目前 -

            //Excerpt  
            db.form.Add(ViewModel);
            db.SaveChanges();
            return RedirectToAction("List");

然后我有一个以正常方式拉出的列表,并且有一个链接可供用户点击转到/stage2/(id)

我理想的是将我的代码更改为:

            //Excerpt  
            db.form.Add(ViewModel);
            var newentry = db.SaveChanges();
            return RedirectToAction("Stage2", new {id = newentry));

我已经看到以这种方式调用SaveChanges()会导致返回一个int,但是,我已经尝试了,它似乎没有提取对象的ID,我已经尝试了一些其他的东西,但我不确定要使用的语法。

我所能想到的只是分离物体,然后再次选择并返回,但是,是否有更“光滑”或直接的方式来做到这一点?



编辑 - 我想我已经解决了这个问题......但是,我需要等待7个小时才能发布答案。

除非我弄错了 - 在这种情况下,请有人告诉我!......看起来Entity Framework会自动更新您传递的对象。

当我传递form对象时,在调用SaveChanges时,它会自动设置表单对象的ID。

所以,我所需要的只是:

        //Excerpt  
        db.form.Add(ViewModel);
        return RedirectToAction("Stage2", new {id = ViewModel.id));

2 个答案:

答案 0 :(得分:0)

试试这个:

form ViewModel = new form();
// Add all your operations on the ViewModel object
db.AddToform(ViewModel);
db.SaveChanges();
//int id = ViewModel.id;
return RedirectToAction("Stage2", new {id = ViewModel.id));

调用“SaveChanges”方法后,ViewModel id属性会更新

答案 1 :(得分:0)

除非我弄错了 - 在这种情况下,请有人告诉我!......看起来Entity Framework会自动更新您传递的对象。

当我传递一个表单对象时,在调用SaveChanges时,它会自动设置表单对象的ID。

所以,我所需要的只是:

    //Excerpt  
    db.form.Add(ViewModel);
    return RedirectToAction("Stage2", new {id = ViewModel.id));