2011-06-30 128 views
10

我正在使用MVC asp.net。如何在RedirectToAction中傳遞參數?

這是我的控制器操作:

public ActionResult ingredientEdit(int id) { 
    ProductFormulation productFormulation = db.ProductFormulation.Single(m => m.ID == id); 
    return View(productFormulation); 
} 

// 
// POST: /Admin/Edit/5 

[HttpPost] 
public ActionResult ingredientEdit(ProductFormulation productFormulation) { 
    productFormulation.CreatedBy = "Admin"; 
    productFormulation.CreatedOn = DateTime.Now; 
    productFormulation.ModifiedBy = "Admin"; 
    productFormulation.ModifiedOn = DateTime.Now; 
    productFormulation.IsDeleted = false; 
    productFormulation.UserIP = Request.ServerVariables["REMOTE_ADDR"]; 
    if (ModelState.IsValid) { 
     db.ProductFormulation.Attach(productFormulation); 
     db.ObjectStateManager.ChangeObjectState(productFormulation, EntityState.Modified); 
     db.SaveChanges(); 
     **return RedirectToAction("ingredientIndex");** 
    } 
    return View(productFormulation); 
} 

我想通過id來ingredientIndex行動。我怎樣才能做到這一點?

我想使用此ID public ActionResult ingredientEdit(int id)它來自另一頁。其實我沒有id在第二個動作,請建議我該怎麼做。

回答

0

爲什麼不這樣做?

return RedirectToAction("ingredientIndex?Id=" + id); 
+0

先生請我編輯的問題。 –

+0

你必須沿每個視圖傳遞id –

25
return RedirectToAction("IngredientIndex", new { id = id }); 

更新

首先,我會重新命名IngredientIndex和IngredientEdit只指數和編輯,並放置在IngredientsController,而不是AdminController,你可以有一個名爲管理員,如果您想要的區域。

// 
// GET: /Admin/Ingredients/Edit/5 

public ActionResult Edit(int id) 
{ 
    // Pass content to view. 
    return View(yourObjectOrViewModel); 
} 

// 
// POST: /Admin/Ingredients/Edit/5 

[HttpPost] 
public ActionResult Edit(int id, ProductFormulation productFormulation) 
{ 
    if(ModelState.IsValid()) { 
     // Do stuff here, like saving to database. 
     return RedirectToAction("Index", new { id = id }); 
    } 

    // Not valid, show content again. 
    return View(yourObjectOrViewModel) 
} 
+2

如何在[HttpPost]動作中使用「id」的值。 –

+0

看看上面的例子。如果你正在編輯你的第五個項目(/ Edit/5),那麼當你POST時(標準路由等),它會自動將它映射到id(int)。 –

0

試試這個方法:

return RedirectToAction("IngredientIndex", new { id = productFormulation.id });