Параметр имеет значение null для метода put

Расширение ответа frieder на случай поддержки и диакритическую нечувствительность.

public static String stripDiacritics(String s) {
        s = Normalizer.normalize(s, Normalizer.Form.NFD);
        s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
        return s;
}

public static void setTextWithSpan(TextView textView, String text, String spanText, StyleSpan style, boolean caseDiacriticsInsensitive) {
        SpannableStringBuilder sb = new SpannableStringBuilder(text);
        int start;
        if (caseDiacriticsInsensitive) {
            start = stripDiacritics(text).toLowerCase(Locale.US).indexOf(stripDiacritics(spanText).toLowerCase(Locale.US));
        } else {
            start = text.indexOf(spanText);
        }
        int end = start + spanText.length();
        if (start > -1)
            sb.setSpan(style, start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        textView.setText(sb);
    }
1
задан Camilo Terevinto 13 July 2018 в 18:10
поделиться

2 ответа

Вы должны использовать [FromBody] так:

public IActionResult Post([FromBody]User u)

Таким образом вы привязываете данные из тела запроса к объекту User

2
ответ дан Kostis 17 August 2018 в 12:17
поделиться
  • 1
    Спасибо @kostis! Теперь это работает! В этом документе MS не сообщается: docs.microsoft.com/pt-br/aspnet/core/tutorials/… – Jean J. Michel 13 July 2018 в 18:20
  • 2
    Добро пожаловать! Вы можете посмотреть здесь: docs.microsoft.com/en-us/aspnet/core/mvc/models/… – Kostis 13 July 2018 в 18:21
  • 3
    @ JeanJ.Michel: Это не обязательно, если у вас есть [ApiController] атрибут на вашем контроллере (начиная с ASP.NET Core 2.1) и ЭТО , зарегистрированное в указанной вами ссылке, вам просто нужно прочитать он находится в разделе docs.microsoft.com/en-us/aspnet/core/web-api/… . [ApiController] существует для удобства для WebAPI-подобных контроллеров (которые возвращают данные xml или json вместо представлений, отображаемых в html) – Tseng 13 July 2018 в 18:59

Для конкуренции:

Использование [FromBody] не требуется, когда контроллер аннотируется с атрибутом [ApiController] (поддерживается только в ASP.NET Core 2.1 и новее). Это удобный способ уменьшить количество необходимых атрибутов для действий и параметров действия.

Среди других удобных методов также есть введенные ActionResult<T> для действий и контроллеров WebAPI-esque.

Вы можете получить дополнительную информацию из следующего сообщения в блоге на ASP.NET Core 2.1.0-preview1: Усовершенствования для создания веб-API

[ApiController] и ActionResult

ASP.NET Core 2.1 вводит новые соглашения с контроллером Web API, которые делают разработку Web API более удобной. Эти соглашения могут быть применены к контроллеру с использованием нового атрибута [ApiController]:

  • Автоматически отвечать с 400 при возникновении ошибок проверки - нет необходимости проверять состояние модели в вашем методе действий
  • Вывести более разумные значения по умолчанию для параметров действия: [FromBody] для сложных типов, [FromRoute], когда это возможно, в противном случае [FromQuery]
  • Требовать маршрутизацию атрибутов - действия недоступны по маршрутам, основанным на соглашениях

Вы также можете вернуть ActionResult из своих действий веб-API, что позволяет возвращать результаты произвольного действия или определенный тип возврата (благодаря некоторому умному использованию неявных операторов трансляции). Большинство методов действия веб-API имеют определенный тип возвращаемого значения, но также должны иметь возможность возвращать несколько разных результатов действий.

1
ответ дан Tseng 17 August 2018 в 12:17
поделиться
  • 1
    Теперь я замечаю, что в моей версии VS (2017 Enterprise) используется Core 2.0.x. Я ищу правильный способ обновить это сейчас и использовать атрибут [ApiController], generics и т. Д. – Jean J. Michel 13 July 2018 в 21:47
  • 2
    Обновите последнюю версию VS2017 (15.7.5), так как она должна установить SDK 2.1.302, который также должен содержать обновленные инструменты и шаблоны для лесов. Его ценность даже тогда, когда у вас уже есть существующий проект, особенно если вы используете ASP.NET Core Identity, поскольку представления по умолчанию будут теперь в сборке удостоверений, если вы не хотите их настроить. В противном случае просто обновлены пакеты и файл csproj для новых версий – Tseng 13 July 2018 в 21:51
Другие вопросы по тегам:

Похожие вопросы: