Как принять и точку, и запятую в качестве разделителя дробной части

Создадим привязки к модели, то есть реализуем интерфейс IModelBinder, чтобы позволить использование и точки, и запятой в качестве разделителя: public class DecimalModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext […]

Профилирование приложений

В Microsoft Visual Studio есть встроенный Profiler, который позволяет определить функцию, занимающую большую часть ресурсов. Использовать следующим образом: В основном меню Debug -> Perfomance and diagnostic   Выбрать, использование какого […]

Использование профайлера памяти

Профайлер – это программа, которая может работать в двух режимах: Поиск функций, выполнение которых занимает большое количество времени Поиск функций, создающей большие объекты или большое количество объектов, занимающих большой объем […]

IndexedDB для хранения больших структурированных данных на клиенте

IndexedDB — стандарт хранения больших структурированных данных на клиенте. Это объектная база данных, которая намного мощнее, эффективнее и надежней, чем веб-хранилище пар ключ/значение, доступное посредством прикладного интерфейса Web Storage. Является […]

Как правильно писать заявки на фриланс-биржах?

Если вы хотите работать фрилансером, без фриланс бирж сложно обойтись. Поэтому вам в любом случае нужно научиться писать правильно заявки на проекты, которые выкладывают заказчики. Самая раздражающая штука на фриланс […]

Обработка исключения для Html.AntiForgeryToken()

Если для страницы авторизации используется хелпер Html.AntiForgeryToken(), то существует вероятность получить исключение в случае, когда пользователь войдет в систему через другую вкладку. Чтобы не лишать пользователя уверенности в стабильной работе […]

Двухфакторная аутентификация при помощи Google AUTHENTICATOR

Во-первых, необходимо установить open source package под названием OTP Sharp для валидации TOTP кода. Далее следует создать метод для вывода QR-кода на страницу: [HttpGet] public async Task EnableGoogleAuthenticator() { byte[] […]