Хорошо, я узнал, как это исправить. Реализовано, что разметка контролируется частичным представлением в Views \ Partials \ Forms \ Themes \ default \ Fieldtypes \ FieldType.RadioButtonList.cs html и DropDownList.cs html.
Итак, строка, которая гласит:
<input type="radio" name="@Model.Id" id="@string.Concat(Model.Id,"_",i)" value="@pv.Value"
необходимо прочитать:
<input type="radio" name="@Model.Id" id="@string.Concat(Model.Id,"_",i)" value="@pv.Id"
ОДНАКО: это отлично подходит для значений полей из таблицы БД, но не будет работать для полей, в которых вы указали жестко закодированный список предварительных значений. Следовательно, для обработки обоих сценариев ios приведенная выше строка становится такой:
var valueId = pv.Id == "0" ? pv.Value : pv.Id;
<input type="radio" name="@Model.Id" id="@string.Concat(Model.Id,"_",i)" value="@valueId"
Так что, если Id равен 0, он использует строковое значение, как и раньше (жестко заданные идентификаторы prevalue всегда равны нулю), в противном случае он использует Id из поля предварительного идентификатора исходного значения.
Предупреждение в том, что это решение предполагает, что вы не заполняете никакие предварительные значения допустимым идентификатором 0. 0. 1014 *