Идентификатор с RadioButtonFor - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь разобраться с идентификаторами радиокнопок в asp MVC 5

Я так работаю

Пример модели

class A
{
   public bool? radio { get; set; }
}

и в виде бритвы

@Html.RadioButtonFor(x => x.NeutroBT, Model.NeutroBT, new { @id = "True"})
@Html.RadioButtonFor(x => x.NeutroBT, !Model.NeutroBT, new { @id = "False})

Это не вызывает проблем, но я работаю в шаблоне редактора, и я хочу, чтобы он сгенерировал id, чтобы получить доступ каким-то образом, как @Html.IdFor(x => x.NeutroBT, true) и @Html.IdFor(x => x.NeutroBT, false) из других представлений, просто предотвращая изменения в будущем

Возможно ли что-то подобное? Я трачу много времени на поиски и ничего подобного не получаю

Если это невозможно, как лучше всего с этим бороться?

спасибо!

1 Ответ

0 голосов
/ 27 августа 2018

Нет необходимости использовать атрибут id. Вместо этого вы можете просто использовать атрибут name, чтобы выбрать или установить значение с помощью javascript (и в любом случае, @Html.IdFor() will only ever return NeutroBT , not the id that you override in the RadioButtonFor () `, чтобы его нельзя было использовать в вашем случае)

Кроме того, второй параметр RadioButtonFor() должен быть true или false (не Model.NeutroBT и !Model.NeutroBT).

А чтобы связать метку с кнопкой, вы можете заключить ее в <label>, например

<label>
    @Html.RadioButtonFor(x => x.NeutroBT, true, new { id = ""})
    <span>Yes</span>
</label>
<label>
    @Html.RadioButtonFor(x => x.NeutroBT, false, new { id = ""})
    <span>No</span>
</label>

Обратите внимание, что new { id = "" } удаляет атрибут id и предотвращает недопустимый html из-за дублирования атрибутов id.

Затем для доступа к выбранному значению с помощью jQuery

var selectedValue = $('input[name="' + @Html.NameFor(x => x.NeutroBT) + '"]:checked').val();
...