2011-06-30 17 views
10

Pracuję nad MVC asp.net.Jak przekazać parametr w RedirectToAction?

To moje działania kontrolera:

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); 
} 

Chcę przekazać identyfikator do ingredientIndex działania. Jak mogę to zrobić?

Chcę użyć tego id public ActionResult składnikEdit (int id), który pochodzi z innej strony. właściwie nie mam id w drugiej akcji, proszę zasugeruj mi co mam zrobić.

Odpowiedz

0

Dlaczego tego nie zrobić?

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

Sir proszę sprawdzić moje edytowanego pytanie. –

+0

Będziesz musiał podać identyfikator wzdłuż każdego widoku –

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

Aktualizacja

pierwsze chciałbym zmienić nazwę IngredientIndex i IngredientEdit tylko Index i Edit i umieścić je w IngredientsController zamiast AdminController, można mieć obszar o nazwie Administrator, jeśli chcesz.

// 
// 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

jak mogę użyć wartości "id" w akcji [HttpPost].? –

+0

Spójrz na powyższy przykład. Jeśli edytujesz swój piąty element (/ Edit/5), automatycznie mapuje go na id (int), gdy POST (ze standardowymi trasami itd.). –

0

Spróbuj w ten sposób:

return RedirectToAction("IngredientIndex", new { id = productFormulation.id }); 
Powiązane problemy