powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - обмен данными между Actions
8 сообщений из 8, страница 1 из 1
MVC - обмен данными между Actions
    #38516083
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Возникла необходимость на ASP.NET MVC 4 реализовать страничку со следующей функциональностью:
- пользователь может загрузить на страничку csv-файл (до 1000 строк, 10 столбцов)
- содержимое файла отображается в таблице (я использую jqGrid, Trirand.Web.Mvc)
- пользователь может эту табличку покрутить (сортировка, поиск, проч.) - здесь используется ajax.

Вопрос заключатеся в том, как передавать содержимое файла ajax-запросами. Возможно ли это делать не сохраняя его в БД и на диск? Если сохранять, то как передавать между запросами на сервер ключ, по которому этот файл можно получить?
...
Рейтинг: 0 / 0
MVC - обмен данными между Actions
    #38516108
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMe,

сохраните в сессии. ключ не нужен, так как сессия и есть ключ.
только не забудьте о банальных проверках на размер и внедрение скрипта.

но лучше таки использовать базу данных, даже для хранения временных данных (потом чистить). оперативка не резиновая, и сессия теряется через определённое время.
...
Рейтинг: 0 / 0
MVC - обмен данными между Actions
    #38516147
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только сохранение в БД. Сессии может предложить только... ладно, в предновогодние праздники обойдусь без мата

P.S. Так в чем сложность скинуть данные в БД? Потом можно всегда подчистить.
...
Рейтинг: 0 / 0
MVC - обмен данными между Actions
    #38516418
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

Подскажите, Id записи в базе каким образом между запросами к серверу передавать?
...
Рейтинг: 0 / 0
MVC - обмен данными между Actions
    #38516471
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMeМСУ, Подскажите, Id записи в базе каким образом между запросами к серверу передавать?
URL, личный профиль пользователя или, на худой конец, куки. Основной плюс такого подхода - централизованное хранение + пользователь всегда сможет восстановить состояние (например, можно сделать такой функционал - Мои загрузки). Ну и так далее. В случае сессии ничего такого сделать нельзя априори. Сессия в прикладных задачах - это беспощадное зло и пустая трата оперативной памяти сервера приложений.
...
Рейтинг: 0 / 0
MVC - обмен данными между Actions
    #38516590
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСессия в прикладных задачах - это беспощадное зло и пустая трата оперативной памяти сервера приложений.

если напряги с оперативкой, то да
хватит уже нудить!
...
Рейтинг: 0 / 0
MVC - обмен данными между Actions
    #38516633
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли напряги с оперативкой, то да
А если выключили свет, пользователь похерил свои данные, всё заново?

hVosttхватит уже нудить!
Да тут с твоими советами как не гундеть?
...
Рейтинг: 0 / 0
MVC - обмен данными между Actions
    #38516699
автор- пользователь может загрузить на страничку csv-файл (до 1000 строк, 10 столбцов)
- содержимое файла отображается в таблице

HTML 5
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" /> 
        <meta name="viewport" content="width=device-width,initial-scale=1.0">        
        <title>.csv</title>        
    </head>
    <body>
        <header>
            <h1>Reading .csv file...</h1>                
        </header>
        <section>
            <input type="file" 
                   id="csvFileInput" 
                   onchange="handleFiles(this.files)" 
                   accept=".csv" />
            <div id="info" style="color: red;"></div>
            <div id="output"></div>
        </section>
        <script>
            function handleFiles(files) {
                var reader, file = files[0];

                if (window.FileReader) {
                    reader = new FileReader();

                    reader.onload = function(evt) {
                        var lines = evt.target.result.split(/\r\n|\n/),
                            rows = [], i;

                        for (i = 0; i < lines.length; i += 1) {
                            rows.push(lines[i].split(/\t|;/));
                        }
                        drawOutput(rows, file);
                    };
                    reader.onerror = function(evt) {
                        if (evt.target.error.name === 'NotReadableError') {
                            console.log('Can\'t read file!');
                        }
                    };
                    reader.readAsText(file, 'windows-1251');
                } else {
                    console.log('FileReader are not supported in this browser.');
                }
            }

            function drawOutput(lines, file) {
                var output = document.getElementById('output'),
                    info = document.getElementById('info'),
                    table = document.createElement('table'),
                    p = document.createElement('p'),
                    row, cell, i;

                info.innerHTML = '';
                output.innerHTML = '';
                
                p.innerHTML = 'NAME: ' + file.name 
                        + ' TYPE: ' + file.type 
                        + ' SIZE: ' + file.size + ' bytes';
                
                for (i = 0; i < lines.length; i += 1) {
                    row = table.insertRow(-1);
                    for (var j = 0; j < lines[i].length; j += 1) {
                        cell = row.insertCell(-1);
                        cell.appendChild(document.createTextNode(lines[i][j]));
                    }
                }          
                
                output.appendChild(table);                
                info.appendChild(p);                
            }
        </script>
    </body>
</html>



авторпользователь может эту табличку покрутить (сортировка, поиск, проч.)

http://knockoutjs.com/examples/grid.html - почитай на досуге... ;)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - обмен данными между Actions
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]