Я плохо знаком с ASP.NET MVC 2 и хотел бы знать то, что самая легкая и/или лучшая практика должна отправить "данным сетки" с Представления на Контроллер. Думайте об этих "данных сетки" как об электронной таблице Excel, где некоторые столбцы будут иметь некоторые данные, и некоторые строки будут иметь некоторые данные. В контроллере я должен знать не только, какой столбец и строка содержат данные, но также и определенные данные, которые это содержит. Моя надежда состояла бы в том, чтобы иметь "объект сетки" в классе контроллера, до которого я мог циклично выполниться, собирают необходимые данные, но я открыт для других опций.
Очевидно, это, вероятно, не самый легкий способ собрать данные как это, но просто предположить, что это - единственный способ, которым Вам разрешают получить этот вход от пользователя.
Также я использую VS.NET 2010, ASP.NET 4.0, C# 4.0, таким образом, я думал о не использовании ASP.NET MVC 2 и использовании веб-форм ASP.NET, так как это кажется, это решение было бы легче в веб-формах. Мое единственное беспокойство с выполнением, которое является, существует другие аспекты веб-сайта, который был бы легче в MVC, и это, кажется, единственная проблема в этой точке с использованием MVC.
Спасибо, Paul
Это во многом будет зависеть от того, как вы настроите свой стол. Но вот очень простой пример:
1 - поместите вашу таблицу отверстий в форму;
2 - Идентифицируйте каждое поле ячейки данных с его "координацией"
Вот так:
<%: 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
}