Форма POST массивов: IIS против Apache - PullRequest
3 голосов
/ 28 февраля 2012

Во время некоторого тестирования я обнаружил, что на форме сервера Apache массивы POST должны отличаться от массивов на сервере IIS.Например,

Apache:

<form method="post">
    <input type="hidden" name="a[]" value="asd" />
    <input type="hidden" name="a[]" value="cvbcv" />
    <input type="submit" name="b" value="Submit" />
</form>

IIS с использованием MVC3 Framework:

<form method="post">
    <input type="hidden" name="a" value="asd" />
    <input type="hidden" name="a" value="cvbcv" />
    <input type="submit" name="b" value="Submit" />
</form>

Оба дают одинаковый результат с массивом a длины 2. Вкакой момент в стеке это оценивается?Веб-сервер, браузер и т. Д.

Примечание. Использование противоположных обозначений на каждом сервере не приводит к созданию массива.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Это может быть проблема браузера.Я только что попробовал этот код в IE 9 и Chrome.

<form action="@Url.Action("Index", "Default")" method="post">
 <input type="hidden" name="vals[]" value="1"/>
 <input type="hidden" name="vals[]" value="2"/>
 <input type="submit" name="button" value="Go" />
</form>

И контроллер

    [HttpPost]
    public ActionResult Index(string button, string[] vals)
    {
        return null;
    }

В Chrome vals был массив длиной 1, сединственное значение 1

В IE9 vals было null

1 голос
/ 28 февраля 2012

MVC определенно поддерживает массивы, однако вы должны указать [0], [1], [2] Это функция веб-сервера и языка разработки.Они оба могут разбирать отдельно.PHP анализирует иначе, чем ASP.NET, но если вы используете «противоположную» нотацию, у вас действительно должны быть числа, поэтому MVC на этом этапе правильно строит модель (при условии, что вы используете привязку модели MVC - что в этом случае является функцией).MVC).

Таким образом, чтобы ответить на вопрос, это функция платформы обработки обычно за пределами сервера, откуда вы заботитесь о нем.Если вы ссылаетесь на заголовки напрямую, это одно, если нет, то это язык / технология платформы (например, asp.net или php)

Это не должен быть браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...