簡體   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