這一切都依賴於模型。
案例1: 這裏只有將是一個數據庫表(即一個調查)
如果有將只有一個數據庫表,你只需要一個控制器和一個視圖。
例如:
public class Survey
{
public String Answer1 { get; set; }
public String Answer2 { get; set; }
public String Answer3 { get; set; }
}
視圖可以提出第一問題,並相應地顯示相應的字段。所以只有最後的提交按鈕將是HTTP Post
。所有以前的按鈕只會執行一個簡單的JavaScript操作。
案例2: 第一個問題用於決定用戶應該進行哪項調查。
我將有一個返回初始視圖的Action。該視圖做了HttpPost到另一個動作(ShowSurvey
)
public ActionResult Index()
{
return View();
}
[HttpPost]
public async Task<ActionResult> ShowSurvey(string id)
{
switch(id)
{
// display the appropriate View here.
}
}
ShowSurvey
會在使用你知道哪些調查你應該拿顯示參數。此操作將擁有自己的視圖/視圖。 (如果所有的調查問題都是相似的,那麼您可能需要更多的觀點)。
這將是我的方法順便說一句。批評者歡迎!
UPDATE:
我再次看了你的問題,你提到你有隻有一個SQL表。所以是的案例1將是最簡單的方法。
顯示最初的問題。使用JavaScript決定在運行時顯示什麼等。用戶完成回答所有問題後,您可以向他(或啓用)提交按鈕執行HTTP Post
回到您的操作並將數據提交到數據庫。
PS:我用這個詞的調查,只是因爲問題讓我想起他們的:P
這種方法運行良好。我在模型中添加了「nStage」,並在Switch中使用了該值。 – Mark 2014-09-29 13:57:43