Мое приложение сделано в ASP.NET MVC 5
.Пользователь может использовать форму поиска, которая отображает отфильтрованные данные.Теперь я хочу добавить кнопку, которая будет экспортировать отображаемые данные.
Для этого я отправляю объект Search
для просмотра и сохраняю его в формате HTML.Теперь, нажимая кнопку экспорта, я хочу передать этот объект в контроллер, получить данные из базы данных, используя этот объект Search
, и сохранить результаты как text
.
Дело в том, что я не могу связать json с c#
объектом,Вот мой view
:
<div id="originalForm" style="visibility:hidden">
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model))
</div>
Это мой ajax
код:
function exportRaportToCsv() {
var $formData = $('#originalForm').text();
var allIds = getCheckedIds();
var dataToSend = JSON.stringify({
ids: allIds,
search: $formData
});
$.ajax({
type: "POST",
url: '@Url.Action("ExportToCsv", "BankCosts")',
data: dataToSend,
contentType: "application/json; charset=utf-8",
success: function (datar) {
window.location = '/BankCosts/Download?fileGuid=' + response.FileGuid
+ '&filename=' + response.FileName;
},
error: function (xhr) {
},
});
}
А это мой контроллер:
[HttpPost]
public ActionResult ExportToCsv(string[] ids, Search search)
{
// search is null here
}
Когда я шпионюотправляя данные с Fiddler
Я вижу, что я передаю следующее:
{"ids":[],"search":"\n {\"ID\":0,\"DateFrom\":\"2018-06-23T00:00:00\",\"DateTo\":\"2018-06-25T00:00:00\",\"hasUnrecognizedStatus\":false,\"skippedSearchResults\":0,\"paginationLimit\":100}\n"}
Я думаю, стоит упомянуть, что ids
правильно передано.Если он содержит данные, эти данные передаются.Я думаю, проблема в том, что у меня \
в моем json
.Как я могу удалить это?Что-то не так с моим ajax
?
Когда я использую console.log
для печати $formData
, я вижу, что \
символов больше нет, и выглядит лучше:
{"ID":0,"DateFrom":"2018-06-23T00:00:00","DateTo":"2018-06-25T00:00:00","hasUnrecognizedStatus":false,"skippedSearchResults":0,"paginationLimit":100}