Если ваша цель состоит в том, чтобы проанализировать, и ваш ввод может быть литералом, то вы ожидаете, что float
и toFixed
не предоставят этого, поэтому вот две простые функции для обеспечения этого:
function parseFloat2Decimals(value) {
return parseFloat(parseFloat(value).toFixed(2));
}
function parseFloat2Decimals(value,decimalPlaces) {
return parseFloat(parseFloat(value).toFixed(decimalPlaces));
}
Мы используем все, кроме поставщика профиля. Провайдер профиля полностью основан на тексте и выполняет полнотекстовый поиск - это становится чрезвычайно медленным по мере увеличения вашей пользовательской базы. Мы пришли к выводу, что это гораздо лучшее решение - «роль собственного» раздела профиля базы данных api членства, привязанного к идентификатору пользователя в членстве.
Раньше я использовал SqlMembership, и это неплохо, если вам не нужно что-то особенное. Я помню, что мне нужно было что-то вроде имени и фамилии, и я понял, что для этого нет полей. В конце концов, вместо расширения я использовал поле «Комментарий» провайдера и добавил туда информацию об имени.
Обычно я использую поставщиков, которые входят в стандартную комплектацию, основная проблема, с которой я сталкиваюсь, - это запросы по атрибутам профиля у пользователей. Например, поиск всех пользователей, у которых атрибут профиля под названием Car равен true. Это связано с тем, как они хранятся в базовой структуре.
Теоретически они звучат хорошо, но это не шанс, если вы проводите какое-либо модульное тестирование, не создавая множества абстрактных оболочек.
Если вам нужна только базовая поддержка пользователей (роли, профили и т. Д.), Тогда отлично подойдут поставщики по умолчанию.
Если вам нужна более индивидуальная поддержка (хранение данных в базе данных не поддерживается поставщиками по умолчанию [например, Oracle], поставщиком для уже существующей базы данных, сильно настроенной схемой), тогда вам следует развернуть собственных поставщиков.
Что касается меня, моему текущему сайту требовалась только базовая поддержка ролей (и минимальные профили) support), поэтому я выбрал поставщиков по умолчанию.
Я использовал как настраиваемые классы, так и встроенные. Когда вам нужно перейти к другой базе данных или схеме или вам нужна дополнительная информация.
Я абстрагировал слои, чтобы они будет работать на уровне логики и иметь уровень DAL, который использует бит data.common.dbprovider, поэтому он был достаточно универсальным.
Я свернул свои собственные классы MembershipProvider
, используя производные типы MembershipUser
, чтобы обернуть настраиваемую схему пользователя, поэтому теперь доступны свойства стиля профиля везде как часть производного пользователя посредством приведения.