Наилучшая практика отправки данных сетки в ASP.NET MVC 2 из представления в контроллер - PullRequest
1 голос
/ 12 августа 2010

Я новичок в ASP.NET MVC 2 и хотел бы знать, что является самым простым и / или лучшим способом отправки «данных сетки» из представления в контроллер.Думайте об этих «данных сетки» как о электронной таблице Excel, в которой некоторые столбцы будут содержать некоторые данные, а некоторые строки будут содержать некоторые данные.В контроллере мне нужно знать не только какие столбцы и строки содержат данные, но также и конкретные данные, которые они содержат.Я надеюсь, что в классе контроллера будет иметься «объект-сетка», который я мог бы перебрать, чтобы собрать необходимые данные, но я открыт для других вариантов.

Очевидно, что это, вероятно, не самый простой способ сбора данных, как это, но только представьте, что это единственный способ, которым вам разрешено получать этот ввод от пользователя..NET 2010, ASP.NET 4.0, C # 4.0, поэтому я подумал о том, чтобы не использовать ASP.NET MVC 2 и веб-формы ASP.NET, поскольку кажется, что это решение будет проще в веб-формах.Единственное, что меня беспокоит, это то, что есть другие аспекты веб-сайта, которые будут проще в MVC, и на данный момент это единственная проблема с использованием MVC.

1 Ответ

2 голосов
/ 12 августа 2010

Это будет во многом зависеть от того, как вы закинули свой стол.Но вот очень простой пример:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...