Тип ввода = «отправить» не может передать свое значение на сервер, если значение начинается с заглавной буквы - PullRequest
1 голос
/ 23 мая 2019

В моем HTML есть две кнопки: Сохранить, Сохранить и Выйти. На сервере я проверяю значение кнопки и действую соответственно. Однако, если значение кнопки начинается с заглавной буквы на сервере, это Нуль. Строчная буква проходит через штраф.

Ниже мой код

// HTML:

        <input type="submit" class="btn btn-primary btn-block"  name="submissionbutton" value="Save" />
        <input type="submit" class="btn btn-primary btn-block" name="submissionbutton" value="Save & Exit" />

// SERVER:

        var button = Request.Form["submissionbutton"];
        model.Save(id, db);
        if (button == "Save & Exit")
        {
            return RedirectToAction("Index");
        }
        else
        {
            model = new EditEquipmentViewModel(id, db);
            return View(model);
        }

Если я изменил значение на входе с «Сохранить» на «сохранить», все работает нормально, но затем на самой кнопке отображается «сохранить» в нижнем регистре, что нежелательно. Я не понимаю, как изменение значения с нижнего регистра на верхний регистр при вводе type = "button" обнуляет его на сервере.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Я думаю, что это как-то связано с тем, как Json сериализует значения форм:

Попробуйте эту ссылку ниже: Свойства JSON теперь строчные при замене из ASP .Net Core 1.0.0-rc2-окончательный вариант до 1.0.0

Заменить эту строку:

jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

На:

jsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
0 голосов
/ 23 мая 2019

Бьюсь об заклад, проблема на самом деле ваш амперсанд. Если это так, посмотрите на использование encodeURIComponent(); https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

"Без кодирования URIC-компонента амперсанд можно интерпретировать на сервер, как начало нового поля и поставить под угрозу целостность данные ".

Я думаю, что вышеизложенное обезопасит отправляемое вами значение и решит проблему. Вы также можете попробовать элемент кнопки вместо элемента ввода. Таким образом, ваше значение будет таким, как вы хотите, по сравнению с текстом, отображаемым на кнопке. Другой способ сделать это - создать собственную кнопку из элемента div. Я не уверен, что эти предложения действительно помогут, поскольку я сам не работаю с asp.net.

<button name="name" value="save" type="submit">Save</button>
<button name="name" value="saveexit" type="submit">Save & Exit</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...