不同的页面单选按钮被预选

Different page radio buttons being pre-selected

有两个页面;第一页第 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>
}

如果您使用表单 post 在调查问卷的页面之间移动,那么您将遇到一个模型状态已预先填充表单值的功能。这是为了防止您需要在验证失败等情况下显示表单。

如果您对表单值感到满意并希望用户继续操作,则可以执行

this.ModelState.Clear();

在重新显示表单之前,或使用

this.RedirectToAction( ...

并将每个问题作为一个单独的请求。