2014-09-02 2 views
3

У меня есть модель с 3-мя свойствами:радио кнопки для 3 логических свойств

public class OptionsViewModel { 
    public Boolean A { get; set; } 
    public Boolean B { get; set; } 
    public Boolean C { get; set; } 
} 

мне нужно отобразить 3 радио кнопки для 3 свойств, включенных в ту же группу.

Поэтому я добавил следующие

@Html.RadioButtonFor(x => x.A) 
@Html.RadioButtonFor(x => x.B) 
@Html.RadioButtonFor(x => x.C) 

У меня есть тебе булевы свойства, а не только один ...

код не компилируется, потому что RadioButtonFor не имеет такой конструктор.

Я попробовал несколько вариантов, но я в конечном итоге иметь возможность выбрать множество переключателей или переплет не работает ...

Может кто-нибудь сказать мне, что лучший способ решить эту проблему с моделью у меня есть?

+0

Радиоприемник кнопка группы только сообщения назад один значение. Если вы хотите опубликовать обратные значения для каждого из трех свойств, используйте '@ Html.CheckBoxFor()' или создайте группу переключателей (true/false) для каждого свойства. –

ответ

0

Вы пробовали это?

@Html.RadioButtonFor(x => x.A, "A", true) A 
@Html.RadioButtonFor(x => x.B, "B", true) B 
@Html.RadioButtonFor(x => x.C, "C", false) C 

Подробнее здесь http://www.c-sharpcorner.com/uploadfile/b19d5a/how-to-create-radio-button-in-asp-net-mvc3-razor-application/

+0

. Я не понимаю ... Почему именно Логическое значение? Я хочу, чтобы булево значение принималось за каждое свойство модели ... –

0

Так что, если я понимаю вопрос правильно, вы получаете неправильное поведение при отображении этих кнопок радио. Вместо того, чтобы действовать в группе (где, когда вы нажимаете один, он отменяет выбор другого), они действуют индивидуально, и все они могут быть проверены.

Если это так, это видео должно помочь вам в решении вашей проблемы и исправить ваш подход. http://www.youtube.com/watch?v=04RY04uKq2s

0

Мне нужно отобразить 3 переключателя для 3 свойств, входящих в ту же группу.

Вы должны обновить свою модель:

public class OptionsViewModel { 
    public bool A { get; set; } 
    public bool B { get; set; } 
    public bool C { get; set; } 
    public bool Value { get; set; } 
} 

Тогда бритву:

@Html.RadioButtonFor(x => x.Value, "A", model.A) A 
@Html.RadioButtonFor(x => x.Value, "B", model.B) B 
@Html.RadioButtonFor(x => x.Value, "C", model.C) C 

С в RadioButton вы получите только 1 значение обратно.

0

Это помогло мне:

Razor код: метод

@Html.RadioButtonFor(model => model.A, "A", new { @Name = "sign", @checked = Model.A }) 
@Html.RadioButtonFor(model => model.B, "B", new { @Name = "sign", @checked = Model.B }) 
@Html.RadioButtonFor(model => model.C, "C", new { @Name = "sign", @checked = Model.C }) 

Действие:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Add(ModelType dataItem, FormCollection formValues) 
{ 
    dataItem.A = formValues["sign"] == "A"; 
    dataItem.B = formValues["sign"] == "B"; 
    dataItem.C = formValues["sign"] == "C"; 
    ... 
} 
Смежные вопросы