2014-09-28 59 views
1

我需要編寫一個移動Web應用程序(MVC),我已經獲得了需要工作的UI設計,但我不確定最佳方法,正在尋找任何建議。MVC ASP.NET基於單一模型的多個視圖

爲了簡化項目:

  • 的第一視圖請求一個數
  • 的第二視圖詢問基於第一兩個值的邏輯類別
  • ,我最多可以顯示6種不同的形式/視圖,每種都收集不同的數據。

該數據然後被寫入到一個SQL表

我不知道我是否應該:

  • 有一個控制器和一個模型,我只是跟蹤哪些功能需要要在該控制器 或
  • 有多發性模型中所示,每個基礎上習慣了這種與WebF以前的模型 或
  • 用面板(即。 orms),並根據跟蹤需要查看的部分再次使這些面板可見。

任何意見,將不勝感激, 馬克

回答

0

這一切都依賴於模型。

案例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

+0

這種方法運行良好。我在模型中添加了「nStage」,並在Switch中使用了該值。 – Mark 2014-09-29 13:57:43

0

的問題是,這兩個是如何關聯?進入第一個領域的價值是否對第二個領域有影響?我會建立一些簡單的兩場模型或 - 因爲我喜歡通過觀看明確的結構,我會添加另一個字段包含可用選項的列表中選擇型號,所以這將是:

public class MySimpleModel{   
    public int MyNumber{get; set;} 
    public string MyCategory{get; set;} 
    public List<string> Categories{get; set;} 
} 

,然後將它張貼控制器(通過常規格式提交或ajax):

public class MyController:Controller{ 
    [HttpGet] 
    public ActionResult Index(){ 
     return View(); 
    } 
    [HttpPost] 
    public ActionResult Index(MySimpleModel model){ 
     if(model==null) 
      return Index(); 
     if (model.MyNumber>3 && model.MyCategory=="xxx") 
      return View("View1",model); 
     //etc. 

    } 
} 

關於用戶界面 - 使用戶界面友好且合乎邏輯。你沒有寫任何關於需求的東西,所以很難建議你:)

相關問題