2012-05-10 43 views
2

實體我有一個動作方法創建一個新的對象一個動作方法中是如下:RedirectToAction的是,在MVC

public ActionResult CreateNKITemplate(int id) 
    { 
     var goalcard = createNKIRep.GetGoalCardByID(id); 
     createNKIRep.CreateTemplate(goalcard); 

     return View(); 
    } 

此操作方法將創建我GoalCard實體內新GoalCard對象,這意味着它將基本生成一個ID。

內CreateTemplate操作方法我想刪除return View();並添加return RedirectToAction所以它重定向到創建

我想新GoalCard對象ID重定向到新的GoalCard對象ID:

public ActionResult Edit(int id) 
{ 
    // code.. 
} 

我怎樣才能做到這一點?

基本上:複製並創建一個新的對象,然後將新的對象ID重定向到此編輯操作方法,該方法將Id作爲參數。

UPDATE:

接受的答案解決方案:

public ActionResult CreateNKITemplate(int id) 
    { 
     var goalcard = createNKIRep.GetGoalCardByID(id); 
     var copygoalcard = createNKIRep.CreateTemplate(goalcard); 
     var GoalCardCopyID = copygoalcard.Id; 

     return RedirectToAction(
       "Edit", // Action name 
       "CreateNKI", // Controller name 
       new { id = GoalCardCopyID }); // Route values 

    } 

提前感謝!

回答

3

那麼,RedirectToAction的定義是。

protected internal RedirectToRouteResult RedirectToAction(
    string actionName, 
    string controllerName, 
    Object routeValues 
) 

所以我們只是填寫你的值。

RedirectToAction(
    "Edit",    // Action name 
    "GoalCardController", // Controller name 
    new { id = gcId }  // Route values 
) 

注意上面的代碼假定您的控制器被稱爲GoalCardController和ID被存儲在一個名爲gcId變量。

+0

不客氣。 – 2012-05-10 11:35:33

1

你問這個嗎?

public ActionResult CreateNKITemplate(int id) 
{ 
    var goalcard = createNKIRep.GetGoalCardByID(id); 
    createNKIRep.CreateTemplate(goalcard); 

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

這會重定向你並給出id作爲參數,你可以用同樣的方法添加多個參數,除以「,」。

如果你願意,你也可以找到另一個控制器的路徑。