Перечисление перечисления как строковое представление в MVC 3 View - PullRequest
0 голосов
/ 15 декабря 2011

В моем коде есть следующий перечислитель:

Public Enum UserSearchFields
    LastName
    FirstName
    Email
    UniqueID
End Enum

Я пытаюсь заполнить раскрывающийся список в представлении значениями из этого перечислителя:

            <select id="search_type">
                <option value="@UserSearchFields.LastName" selected="selected">Last Name</option>
                <option value="@UserSearchFields.FirstName">First Name</option>
                <option value="@UserSearchFields.Email">E-mail</option>
                <option value="@UserSearchFields.UniqueID">Unique ID</option>
            </select>

Но по какой-то причине при отображении страницы поле значения содержит строковые представления перечислителя, а не базовые целочисленные значения. Например, поле значения параметра будет «LastName» вместо «0» ... Почему это так, и я делаю какую-то ошибку?

P.S. Я знаю, что могу заполнить раскрывающийся список из перечислителя, например Как создать раскрывающийся список из перечисления в ASP.NET MVC? , но я просто хотел бы знать, почему возникает эта проблема

1 Ответ

3 голосов
/ 15 декабря 2011

Я думаю, вам нужно установить перечисления на число, например, так:

Public Enum UserSearchFields
    LastName = 0
    FirstName = 1
    Email = 2
    UniqueID = 3
End Enum

Даже если это ненужный шаг, вам нужно привести его к int, когда вы записываете его так:

<select id="search_type" style="width: 100%;">
    <option value="@((int)SOLEPortal.UserSearchFields.LastName)" selected="selected">Last Name</option>
    <option value="@(((int)SOLEPortal.UserSearchFields.FirstName)">First Name</option>
    <option value="@((int)SOLEPortal.UserSearchFields.Email)">E-mail</option>
    <option value="@((int)SOLEPortal.UserSearchFields.UniqueID)">Unique ID</option>
</select>

Лучший способ сделать это - создать метод расширения, который автоматически выписывает выпадающий список из перечисления, но это хорошая отправная точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...