繁体   English   中英

插入后,重定向到编辑页面。 无法获取ID

[英]After insert redirect to edit page. Unable to get ID

我从插入新项目的Category_New.aspx中有FormView。 将其插入以下方法。

 public void myForm_InsertItem()
    {            
        var item = new A.Models.Category();
        CategoryContext db = new CategoryContext();            
        TryUpdateModel(item);
        if (ModelState.IsValid)
        {
            // Save changes here
            db.Category.Add(item);
            db.SaveChanges();
            //item.CategoryID is present from this point
        }
    }

我想将用户重定向到用于编辑该项目的页面。 该页面是Category_Edit.aspx。

如何在方法myForm_ItemInserted中获取插入项的ID,以便以下代码可以工作?

protected void myForm_ItemInserted(object sender, FormViewInsertedEventArgs e)
{
     Response.RedirectToRoute(GetRouteUrl("CategoryEdit", new {CategoryID = /* how to get ID of inserted item??? */}));            
}

如何知道插入物品的ID?

您可能要做的是拥有一个全局int类型变量来保存新类别ID的值,然后可以在重定向方法中传递它。

private int newCategoryId;
public void myForm_InsertItem()
    {            
        var item = new A.Models.Category();
        CategoryContext db = new CategoryContext();            
        TryUpdateModel(item);
        if (ModelState.IsValid)
        {
            // Save changes here
            db.Category.Add(item);
            db.SaveChanges();
            //item.CategoryID is present from this point
            newCategoryId = item.CategoryId; // presumably it's called categoryId
        }
    }

protected void myForm_ItemInserted(object sender, FormViewInsertedEventArgs e)
{
     Response.RedirectToRoute(GetRouteUrl("CategoryEdit", new {CategoryID = newCategoryId}));            
}

这里的关键是插入时,生成的ID将保存到要保存的对象的实例中。

如果您使用的是实体框架,它将在数据插入数据库时​​持久保存对象自动生成的ID。

通常,实体框架执行SELECT SCOPE_IDENTITY()以获得自动生成的ID。

因此,您应该能够按以下方式获取ID。

int Id= item.ID; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM