Предварительно выбираются переключатели для разных страниц - PullRequest
0 голосов
/ 10 мая 2018

Есть две страницы; Раздел 1 на первой странице и раздел 2 на второй странице.

Проблема заключается в том, что при выборе переключателя Секции 1, т. Е. checked="checked" и переходе к Странице 2 / Разделу 2, предварительно выбран первый переключатель ?! Обратите внимание на checked="checked".

Имена совпадают, потому что это динамическая анкета, которая заполняется через RadioButtonFor через модель представления.

Страница 1 / Раздел 1 Группа переключателей:

Yes <input id="11" name="VIQuestions[1].Answer" type="radio" value="0">
No  <input id="12" name="VIQuestions[1].Answer" type="radio" value="1">
N/A <input id="13" name="VIQuestions[1].Answer" type="radio" value="2">

Страница 2 / Раздел 2 Группа переключателей:

Yes <input id="71" name="VIQuestions[1].Answer" type="radio" value="0">
No  <input id="81" name="VIQuestions[1].Answer" type="radio" value="1">
N/A <input id="91" name="VIQuestions[1].Answer" type="radio" value="2">

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

Я ищу способ, чтобы при отправке первой страницы, при отсутствии ошибок, загружалась вторая страница; Затем я хочу стереть всю историю выборов, сделанных на странице 1.

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

РЕДАКТИРОВАТЬ: Для полноты здесь приведен код представления MVC, который выводит переключатели.

for (int j = 0; j < Model.VIQuestions.Count; j++)
{
    string questionId = Model.VIQuestions[j].VIQuestion_Id.ToString();

    <label><span>Yes</span>@Html.RadioButtonFor(m => m.VIQuestions[j].Answer, 1, new { id = questionId + 1 })</label>
    <label>&nbsp;&nbsp;<span>No</span>@Html.RadioButtonFor(m => m.VIQuestions[j].Answer, 2, new { id = questionId + 2 })</label>
    <label>&nbsp;&nbsp;<span>N\A</span>@Html.RadioButtonFor(m => m.VIQuestions[j].Answer, 3, new { id = questionId + 3 })</label>
}

1 Ответ

0 голосов
/ 10 мая 2018

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

Если вы довольны значениями формы и хотите, чтобы пользователь продолжил, то либо выполните

this.ModelState.Clear();

доВы повторно отображаете форму или используете

this.RedirectToAction( ...

, и каждый вопрос рассматривается как отдельный запрос.

...