2014-12-08 2 views
1

В моем веб-проекте я использую RadioButtonFor, но я хочу использовать метку, чтобы выбрать элемент, если пользователь выбирает текст переключателя, но созданный html дает мне несколько одинаковых идентификаторов # id из-за Radiobuton и я хочу изменить это для того, чтобы иметь четкие HTML и использовать JQuery селекторы без проблем (с уникальным идентификатором):RadioButtonFor и метка

CSHTML

@foreach (var item in Model.audit.natureSelect) 
{ 
    <label> 
     @Html.RadioButtonFor(m => m.audit.nature, item.Id, new { Value = item.Id }) @item.NatAudit 
    </label> 
} 

HTML

<div class="col-md-10"> 
    <label><input id="audit_type" name="audit.type" type="radio" value="1">item 1</label> 
    <label><input id="audit_type" name="audit.type" type="radio" value="2">item 2</label> 
    <label><input id="audit_type" name="audit.type" type="radio"value="3">item 3</label> 
</div> 

Спасибо, что помогли мне очистить

+0

В чем вопрос? – DoctorMick

+0

@DoctorMick существует несколько раз один и тот же идентификатор, это неверно, идентификатор должен находиться на dom только один раз. – clement

+0

Как сторона примечания, ваши имена членов не очень C# -y. 'Model.audit.natureSelect' должен быть' Model.Audit.NatureSelect'. –

ответ

4

Вы не используете нужный помощник RadioButtonFor. Вам нужно, чтобы все переключатели имели одно имя, но разные идентификаторы. И вот как это сделать:

@foreach (var item in Model.audit.natureSelect) 
{ 
    <label> 
     @Html.RadioButtonFor(m => m.audit.nature, item.Id, new { id = item.Id }) @item.NatAudit 
    </label> 
} 

Кстати, следует C# соглашению об именовании при именовании свойств и методов. Имена свойств на C# должны начинаться с заглавной буквы.

Смежные вопросы