Как убрать закодированные символы при сериализации входного массива? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть частичное представление, которое содержит это:

<div class="multiplePaths">
  @for (var i = 0; i < Model.Count; i++)
  {
     <div class="form-group">
        @Html.HiddenFor(model=>model[i].Label)
        @Html.EditorFor(model => model[i].Path, new {@class = "form-control col-md-10"})
     </div>
  }
</div>

Когда я вызываю это jQuery:

var model = $(".multiplePaths :input").serialize();

Результаты выглядят примерно так:

%5B0%5D.Label=Repertoire%20destination&%5B0%5D.Path=

1 Ответ

0 голосов
/ 12 февраля 2019

Форматирование потому, что serialize() предназначено для вывода строки запроса.Таким образом, специальные символы, такие как [ и ], кодируются по URI.

Чтобы получить требуемый вывод, вам просто нужно снова декодировать их по URI:

var model = $(".multiplePaths :input").serialize();
console.log('encoded:', model);

var decodedModel = decodeURI(model);
console.log('decoded:', decodedModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="multiplePaths">
  <div class="form-group">
    <input type="hidden" name="[0].Label" value="fooLabel_1" />
    <input type="text" name="[0].Path" value="fooPath_1" />
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...