2010-07-15 50 views
1

我可以做什麼: 我的目標是創建一個視圖,其中包含TextBox和Table的用戶控件根據需要添加到頁面中。用戶將在文本框中鍵入一個SQL查詢,並使用Table來呈現結果。c#MVC將用戶控件的多個實例添加到單個視圖頁面

我需要做什麼: 我需要將這些控件的多個添加到頁面中,如用戶請求它們。他們將被分步編號。

例如:
第1步= sql查詢獲取參數列表; 步驟2 =使用第一個參數返回特定值的sql查詢; 步驟3 = sql查詢,返回將與步驟2中的值進行比較的值的累加值總和。

每次單擊「添加」按鈕時,都會在前面創建一個新的用戶控件,我的SQL查詢併產生我的答案。

我可以做比較和查詢數據庫。沒有問題,我只是不確定如何重新使用MVC中的控件。

任何建議將是有益的, 謝謝, 喬治

回答

0

你試圖做的是有趣和複雜。我相信你已經掌握瞭解決方案的邏輯,所以我將關注你提出的一個簡單問題:「[我如何]將一個用戶控件的多個實例添加到單個視圖頁面?」

當然,有幾種方法可以做到這一點。你可以使用javascript來克隆模板html代碼的 塊,我可能會這樣做,因此我沒有回發。但是,您沒有提到JavaScript,因此您應該簡單地將您的調用包裝到一個foreach循環中,並將該循環提供給增量值或列表。

View.aspx:

<% 
//loop over sqlQueries in list, rendering a 
// partial for each and passing the query into the partial. 
foreach(var item in Model.listOfSqlQueries) 
    Html.RenderPartial("sqlBox", item); 
%>  

然後,在認爲帖子到的ViewResult並返回相同的列表,以及一個項目的按鈕。

Controller.cs:

public ViewResult AddQueryBox(ViewModel viewModel) 
{ 
    //Add blank sql query to list 
    viewModel.listOfSqlQueries.Add(new SqlQuery()); 

    //return calling view with newly updated viewmodel 
    return View("View", viewModel); 
} 
+0

好吧,這是有道理的,但是讓我們說,我已經進入了一個查詢和收到的結果作爲步驟1的一部分,如果我添加(按按鈕)第二一步,那麼第一個查詢將被重新執行(除非我假設我執行了「check if queryresult = True」語句)。 – vwdewaal 2010-07-19 14:10:24

相關問題