Извлечь число с плавающей запятой / двойное значение

К сожалению, @Html.DropDownListFor() ведет себя несколько иначе, чем другие помощники при рендеринге элементов управления в цикле. Об этом ранее сообщалось как о проблеме с CodePlex (не уверен, что ее ошибка или просто ограничение)

. Это 2 варианта для решения этой проблемы, чтобы обеспечить выбор правильной опции на основе свойства модели

Вариант 1 (с использованием EditorTemplate)

Создайте пользовательский EditorTemplate для типа в коллекции. Создайте парциальное значение в /Views/Shared/EditorTemplates/AggregationLevelConfiguration.cshtml (обратите внимание, что имя должно соответствовать имени типа

@model yourAssembly.AggregationLevelConfiguration
@Html.DropDownListFor(m => m.HelperCodeType, (SelectList)ViewData["CodeTypeItems"])
.... // other properties of AggregationLevelConfiguration

, а затем в главном представлении передать SelectList в EditorTemplate как additionalViewData

@using (Html.BeginForm())
{
  ...
  @Html.EditorFor(m => m.Configurations , new { CodeTypeItems = Model.CodeTypeItems })
  ...

Вариант 2 (сгенерируйте новую SelectList на каждой итерации и установите selectedValue)

В этом параметре ваше свойство CodeTypeItems должно быть IEnumerable<GenericIdNameType>, а не SelectList (или просто сделать codeTypes общедоступным свойством). Затем в главном представлении

@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, new SelectList(Model.CodeTypeItems, "Id", "Name", Model.Configurations[0].HelperCodeType)

Сторона примечания: нет необходимости использовать new { id = "Configurations[0].HelperCodeType" - метод DropDownListFor() уже сгенерированный атрибут id

27
задан kirelagin 9 June 2013 в 07:25
поделиться

2 ответа

Вот простой способ. Не используйте regex's для встроенных типов.

try:
    x = float( someString )
except ValueError, e:
    # someString was NOT floating-point, what now?
22
ответ дан S.Lott 9 June 2013 в 07:25
поделиться
  • 1
    " Что касается сравнения с термоусадочной пленкой npm, документация объясняет его очень ясно: It’s, подобный npm’s npm-shrinkwrap.json, однако it’s не с потерями и это создает восстанавливаемые результаты " That' s не очищаются вообще, все же. Термоусадочная пленка не на самом деле с потерями, и shrinkwrap' s вся цель воспроизводимость. It' s просто неопределенные и неправильные требования неподдающиеся проверке. – John Haugeland 18 July 2017 в 16:17

regexp от perldoc perlretut :

import re
re_float = re.compile("""(?x)
   ^
      [+-]?\ *      # first, match an optional sign *and space*
      (             # then match integers or f.p. mantissas:
          \d+       # start out with a ...
          (
              \.\d* # mantissa of the form a.b or a.
          )?        # ? takes care of integers of the form a
         |\.\d+     # mantissa of the form .b
      )
      ([eE][+-]?\d+)?  # finally, optionally match an exponent
   $""")
m = re_float.match("4.5")
print m.group(0)
# -> 4.5

Для извлечения чисел из большей строки:

s = """4.5 abc -4.5 abc - 4.5 abc + .1e10 abc . abc 1.01e-2 abc 
       1.01e-.2 abc 123 abc .123"""
print re.findall(r"[+-]? *(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?", s)
# -> ['4.5', '-4.5', '- 4.5', '+ .1e10', ' 1.01e-2',
#     '       1.01', '-.2', ' 123', ' .123']
51
ответ дан jfs 9 June 2013 в 07:25
поделиться
  • 1
    Описание блокировки пакета в документах NPM делает package-lock.json звук почти идентичный yarn.lock с точки зрения цели. Это - теперь просто случай, где Пряжа имела хорошую идею, и NPM теперь реализовала ее? – Scribblemacher 8 September 2017 в 11:58
Другие вопросы по тегам:

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