Во-первых, самая распространенная причина, по которой перечисление всегда имеет одно и то же значение, заключается в том, что значение было присвоено неправильно, поэтому оно назначается в качестве значения по умолчанию.Значение по умолчанию для перечисления 0
, это самое первое значение, которое вы определили в своем перечислении Classification
.В вашем случае NewestFirst
кажется по умолчанию.Такое поведение означает, что значение DateValueSign
не передается.
Во-вторых, для устранения проблем, которые могут быть связаны с рендерами Razor, всегда проверяйте элемент inspect для проверки сгенерированного кода.В-третьих, при решении таких проблем на стороне сервера, как операторы case, отладчик очень удобен.
Что касается вашей проблемы, MVC требуется значение число вашего перечисления, в противном случае оно по умолчанию равно 0. Если вы отметите свои переключатели в элементе проверки, вы заметите атрибут value
показывает строку типа value="LeastPopular"
, когда она должна показывать что-то вроде value="3"
.Это происходит потому, что функция RadioButton
принимает любое перечисление, назначенное в виде строки.Чтобы достичь этого, просто бросьте каждое ваше перечисление в бритву как int
.
Например, это:
<label class="radio">@Html.RadioButton("DateValueSign", Classification.NewestFirst)Newest First</label>
Становится так:
<label class="radio">@Html.RadioButton("DateValueSign", (int) Classification.NewestFirst)Newest First</label>