Имеется большой список с checkbox-ами. Пользователь с помощью checkbox-ов отмечает некоторые элементы этого списка. При нажатии на кнопку сохраняются все значения отмеченных checkbox-ов (Атрибуты name='ind' и value='@term.Id'). С помощью JQuery получаю массив значений:
var Marks = $("input[name=ind]:checked").serialize();
Данные принимают вид
ind=1&ind=2 ...
Далее открываю новое окно (передаю данные через адресную строку):
window.open(url+Marks, "Выгрузка");
Сервер обрабатывает Get запрос следующим образом:
public ActionResult UnloadTerms(int[] ind)
{
HttpContext.Response.Clear();
HttpContext.Response.Charset = "";
HttpContext.Response.ContentType = "application/msword";
string strFileName = "Выгрузка " + DateTime.Now.ToString("dd:MM:yyyy") + ".doc";
HttpContext.Response.AddHeader("Content-Disposition", "inline;filename=" + strFileName);
StringBuilder strHTMLContent = new StringBuilder();
foreach (int id in ind)
{
TermCardViewModel model = new TermCardViewModel(Manager.GetTerm(id), Manager.GetDefinitionsList(id, 0), Manager.GetAssociationsList(id));
if (model.Term != null)
{
strHTMLContent.Append(RenderViewToString(this, "Partial/PartialTermCardForWord", model));
strHTMLContent.Append("<br /><br /><br />");
}
}
HttpContext.Response.Write(strHTMLContent);
HttpContext.Response.End();
HttpContext.Response.Flush();
return View();
}
Грубо говоря, я формирую частичное представление для каждого элемента с ID из массива ind, а затем склеиваю всё вместе и отдаю пользователю. У него открывается окно сохранения файла, файл сохраняется, всё отлично.
Суть проблемы: если выбрано большое кол-во записей, то Url получается слишком длинный - сервер отказывается его обрабатывать:
Открываю новое окно, чтобы пользователь мог работать в старом, пока выполняется "выгрузка".
Собственно вопрос: можно ли как-то иначе передать большой объем данных в новое окно или осуществлять выгрузку в основном без временной потери работоспособности?
Если никак не получается сократить длинный URL, но работать с ним нужно, то можно воспользоваться директивами настройки веб-сервера для увеличения значений:
для apache LimitRequestLine
Пример: LimitRequestLine 4094
для nginx large_client_header_buffers
Пример: large_client_header_buffers 4 8k;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется список переключающихся ссылок с трансляцией youtube
Здравствуйте, достались градиенты в png, не могу разобраться какие цвета на какие наслаиваются, чтобы получить нужный эффектПомогите пожалуйста...
Как раскрасить каждое слово заголовка h2 в разный цвет с помощью css?
В списке под каждым li стоит border-bottom, но он не распространяется на маркерМожно ли как то подчеркнуть li вместе с маркером?