Есть ли способ отобразить свойство int в виде текста в пользовательском интерфейсе?

Я не уверен, возможно ли это или является ли это приемлемой/неприемлемой практикой, но у меня есть свойство int (Gender) в моем объекте Person, и мне интересно, есть ли способ отображения текста ( и радиокнопки, при условии, что это лучший вариант) для выбора пользователем (например, «мужской» и «женский»), а не отображать его в виде чисел. Я предполагаю, что это возможно, но я не знаю, с чего начать. Будет ли это какая-то настройка непосредственно на свойстве, может быть, на сервисном уровне? У меня есть некоторые настройки с «Формат» и «Заголовок» для других свойств. Вот все, что у меня есть для пола:

properties.Add(new PropertyData { Property = "Gender", Type = "Int32", Value = data.Gender.ToString() });

Или это будет прямо в поле зрения? Это то, что у меня сейчас есть — просто текстовое поле, в котором вы можете ввести целое число.

<p class="span1">
    @Html.Label(Model.Person.Properties, "Gender")
    @Html.TextBox(Model.Person.Properties, "Gender")
    @Html.Tip(Model.Person.Properties, "Gender")
</p>

Любая помощь приветствуется. :) Пожалуйста, дайте мне знать, если мне нужно предоставить какую-либо дополнительную информацию или код.

РЕДАКТИРОВАТЬ: я использовал следующее:

<p>
    @Html.Label(Model.Person.Properties, "Gender")
    <input type="radio" name="Gender" value="1" /><span>Male</span>
    <input type="radio" name="Gender" value="2" /><span>Female</span>
</p>

Есть ли способ оставить кнопку выбранной, когда я вытаскиваю своего человека для редактирования? Все остальное (т. е. текущие данные для записи) повторно заполняется в форме редактирования. (Это должен быть отдельный вопрос?)


person White Island    schedule 06.04.2011    source источник
comment
Нужно ли указывать пол как целое число? Логическое значение было бы лучше   -  person babsher    schedule 06.04.2011
comment
OT: на метафизическом уровне вопрос должен быть обратным: как бы вы отобразили int, если не в тексте? (гистограммы, ползунки, количество пиктограмм) :)   -  person sehe    schedule 06.04.2011
comment
@user673289 user673289, я не уверен, какова предполагаемая польза от того, чтобы иметь его как целое число. Вот как мне сказали создать его, но я понимаю вашу точку зрения.   -  person White Island    schedule 06.04.2011


Ответы (2)


Взгляните на этот пост и посмотрите, поможет ли он: Как передать перечисление в Html.RadioButtonFor, чтобы получить список переключателей в MVC 2 RC 2, C#

Короче

  1. Создать гендерное перечисление
  2. Используйте метод для чтения имени пола из перечисления
  3. Установите значение переключателя на значение перечисления
person Cory    schedule 06.04.2011
comment
Спасибо за ваш вклад. Это то, что я создал, исходя из первого ответа, от @Tejs: ‹p› @Html.Label(Model.Person.Properties, Gender) ‹input type=radio name=Gender value=1 /›‹span› Male‹/span› ‹input type=radio name=Gender value=2 /›‹span›Female‹/span› ‹/p› Видите ли вы преимущество в том, чтобы делать это с гендерным перечислением? Мне это кажется более сложным, чем необходимо только для двух вариантов... но я все еще новичок, поэтому, возможно, я что-то еще упускаю. - person White Island; 06.04.2011
comment
извините, я забыл отметить вас в своем комментарии выше. Я не уверен, увидишь ли ты это иначе. (Я удалил это, думая, что могу отредактировать свой первоначальный комментарий, но похоже, что вы можете редактировать только свой самый последний? :/ Извините за это.) - person White Island; 06.04.2011
comment
@White Island Преимущество перечисления в том, что ваш код более читабелен. Что легче понять, Пол = 1 или Пол = Женский? Кто-то, незнакомый с вашим кодом, не поймет, что означает Gender = 1. - person Cory; 07.04.2011
comment
В итоге я использовал перечисление и просто раскрывающийся список, а не переключатель. Спасибо за вашу помощь. - person White Island; 18.04.2011

В MVC у вас есть полный контроль над визуализируемым HTML. Итак, у вас есть несколько вариантов здесь. Вы можете вручную отображать HTML так, как хотите:

<input type="radio" name="SomeName" value="1"><span>Male</span>
<!-- Etc for each item !-->

Или вы можете использовать один из других HtmlHelpers для этого:

@Html.RadioButtonFor(x => x.Person.Properties, "Male")
@Html.RadioButtonListFor (Custom)

Подробнее о том, как реализовать свой собственный список переключателей в MVC3.

person Tejs    schedule 06.04.2011
comment
спасибо за быстрый ответ и четкие инструкции. В итоге я использовал перечисление и раскрывающийся список, а не переключатель. - person White Island; 18.04.2011