Расширение ответа 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);
}
Вы должны использовать [FromBody]
так:
public IActionResult Post([FromBody]User u)
Таким образом вы привязываете данные из тела запроса к объекту User
Использование [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 имеют определенный тип возвращаемого значения, но также должны иметь возможность возвращать несколько разных результатов действий.
[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