2011-06-30 18 views
10

Estoy trabajando en MVC asp.net.¿Cómo se puede pasar el parámetro en RedirectToAction?

Esta es mi acción del controlador:

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

quiero pasar a Identificación ingredientIndex acción. ¿Cómo puedo hacer esto?

Quiero usar esta identificación public ActionResult ingredientEdit (int id) que viene de otra página. en realidad no tengo id en la segunda acción, por favor sugiérame qué debo hacer.

Respuesta

0

¿Por qué no hacer esto?

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

Sir compruebe mi pregunta editado. –

+0

Tendrá que pasar la identificación a lo largo de cada vista –

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

actualización

En primer lugar me gustaría cambiar el nombre de IngredientIndex y IngredientEdit a solo índice y Editar y colocarlos en IngredientsController, en lugar de AdminController, puede tener un área denominada Admin si lo desea.

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

¿cómo puedo usar el valor de "id" en la acción [HttpPost]? –

+0

Mire el ejemplo anterior. Si está editando su quinto elemento (/ Editar/5), lo mapeará automáticamente a id (int) cuando realice el POST (con rutas estándar, etc.). –

0

Trate de esta manera:

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