2011-04-12 57 views
0

我正在爲我的網站使用ASP.NET MVC 3。調用另一個控制器發佈方法

我創建了一個具有「Previous,Next和Save」按鈕的分部視圖。我在我的母版頁上調用這個部分視圖。

我的要求是,在我所有的View我必須能夠通過將各自的Model數據傳遞給控制器​​動作,在不同的控制器中調用不同的Save方法。

  • 我有4個步驟輸入的數據,我必須在每個步驟中不同的控制器。
  • 如果我在第1步和我點擊保存表單值應該去Step1Controller的操作方法,
  • 如果我在第2步,然後後應該調用Step2Controller

事情是這樣的:

public ActionResult Save(GenericModel model) 
{ 
    //use reflection to find out model type 

    //call appropriate controller action with model 

    return RedirectToAction("Create", new { Controller = "Conference", Action = "Create" }); 
} 

這種保存方法將被要求對Master pageSave按鈕。我怎樣才能做到這一點?

+0

這聽起來像是一個潛在的控制器和模型的概念誤用。爲什麼單個視圖訪問多個控制器以獲取具有相同模型的表單帖子的結果?如果你只需要調用其他函數,就可以在同一個控制器中創建一個函數,但是你需要重新評估你在這裏要做的事情。每個視圖(或部分視圖)應該包裝自己的形式,並在提交時調用其自己的控制器動作。 – dodexahedron 2012-08-18 02:21:31

回答

0

表單在控制器上的單獨操作?

如果是這樣,只需在每個頁面上設置表單動作以指向相關的控制器。所以表格1是

<form method="post" action="/step1controller/action"> 

表2:

<form method="post" action="/step2controller/action"> 

這是否解決問題了嗎?

+0

我無法給出具有特定步驟的控制器和操作名稱的表單,因爲將在所有其他視圖上使用相同的保存按鈕,因此它將在共同控制器中進行決定,該控制器將進一步調用適當的控制器操作。我想要做的是我的保存按鈕將從所有視圖調用每個帖子的控制器操作,並從那裏決定哪個控制器被傳遞給該操作的模型被調用的保存方法。 – Vivek 2011-04-12 10:20:17

0

我會在控制器中創建一個私有方法,並在第一步的每個部分調用。

private bool Save(GenericModel model) 
{ 
    ...... 
} 

[HttpPost] 
public bool SaveStep1(GenericModel model) 
{ 
     this.Save(model); 
} 

[HttpPost] 
public bool SaveStep2(GenericModel model) 
{ 
     this.Save(model); 
} 
相關問題