2010-08-12 43 views
1

我是ASP.NET MVC 2的新手,想知道最簡單的和/或最佳的做法是從網站發送「網格數據」查看控制器。把這個「網格數據」想象成一個excel電子表格,其中一些列將有一些數據,一些行將有一些數據。在控制器中,我不僅需要知道哪個列和行包含數據,還需要知道它包含的特定數據。我的希望是在控制器類中有一個「網格對象」,我可以循環收集必要的數據,但我願意接受其他選項。將ASP.NET MVC 2中的網格數據從查看發送到控制器的最佳實踐

很明顯,這可能不是捕獲這種數據的最簡單方法,只是想象這是允許您從用戶那裏獲取該輸入的唯一方法。

此外,我正在使用VS.NET 2010,ASP.NET 4.0,C#4.0,所以我想過不使用ASP.NET MVC 2和使用ASP.NET Web窗體,因爲它似乎這個解決方案會更容易網頁表單。我唯一擔心的是網站的其他方面在MVC中會更容易,這似乎是使用MVC的唯一問題。

感謝, 保羅

+0

有沒有什麼你停止使用這兩種技術在同一個項目中。 – Lazarus 2010-08-12 13:22:46

回答

2

這將取決於你怎麼樣了,比爾特你的表很大。但這裏有一個非常簡單的例子:

1 - 把你的洞表放在一個表格中;

2 - 確定每個數據單元的領域與它的「coorditate」

像這樣:

<%: using(form = html.Form("UpdateGrid")) { %> 
    <table> 
<%  for (int r = 0; r < rowCount; r++) { %> 
     <tr> 
<%   for (int c = 0; c < columnCount; c++) { %> 
      <td><%: html.TextBox(string.format("cell_{0}_{1}",r,c)) %></td> 
<%   } %> 
     </tr> 
<%  } %> 
    </table> 
<% } %> 

這只是一個示例代碼(我不知道這是否會成功,因爲它是)但它會給你一個想法。 如果你想有一個像Excel的地址,你可以這樣做:

  <td><%: html.TextBox(string.format("{1}{0}",(char)(r + 'A'),c + 1)) %></td> 

要從您可以使用下面的錐控制器訪問表信息:

public ActionResult UpdateGrid(FormCollection form) { 
    // ... Some initialization 
    for (int r = 0; r < rowCount; r++) { 
     for (int c = 0; c < columnCount; c++) { 
      var cellValue = form[string.format("{1}{0}",(char)(r + 'A'),c + 1)]; // Excell like format 
      // Add your manipulation here; 
     } 
    } 
    // ... Continue your controller implementation 
} 
+0

我並不擔心如何在視圖上創建代碼,因爲我如何訪問控制器中的表格。我可能會使用像SlickGrid這樣的jQuery Grid用於View,但我很好奇我怎樣才能將這些數據發送給Controller(可能是Ajax-ified發送,而不是完整的帖子)。 因此,我真正需要幫助的兩件事是這樣的: 1.如何從視圖(您觸摸一下)發送網格數據。 2.如何訪問發送的數據以及我的控制器方法簽名是什麼樣的,我的控制器訪問網格代碼是什麼樣的? – Paul 2010-08-12 14:05:42

+0

我更新了一些控制器端代碼的帖子。 – 2010-08-12 15:02:39

+0

這是非常有用的,因爲你已經反應如此之快,我討厭繼續添加更多「要求」/「問題」到我原來的問題,但任何想法如何使用jQuery網格做到這一點?我在jQuery網格上查看源代碼,並且沒有看到表格正在生成,所以我假設我必須在jQuery端填寫一些JSON對象並將其發佈到控制器方法。想用標準的jQuery網格(如SlickGrid)而不是本地的網格來做這件事? – Paul 2010-08-12 15:22:44

相關問題