不同的页面单选按钮被预选
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> <span>No</span>@Html.RadioButtonFor(m => m.VIQuestions[j].Answer, 2, new { id = questionId + 2 })</label>
<label> <span>N\A</span>@Html.RadioButtonFor(m => m.VIQuestions[j].Answer, 3, new { id = questionId + 3 })</label>
}
如果您使用表单 post 在调查问卷的页面之间移动,那么您将遇到一个模型状态已预先填充表单值的功能。这是为了防止您需要在验证失败等情况下显示表单。
如果您对表单值感到满意并希望用户继续操作,则可以执行
this.ModelState.Clear();
在重新显示表单之前,或使用
this.RedirectToAction( ...
并将每个问题作为一个单独的请求。
有两个页面;第一页第 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> <span>No</span>@Html.RadioButtonFor(m => m.VIQuestions[j].Answer, 2, new { id = questionId + 2 })</label>
<label> <span>N\A</span>@Html.RadioButtonFor(m => m.VIQuestions[j].Answer, 3, new { id = questionId + 3 })</label>
}
如果您使用表单 post 在调查问卷的页面之间移动,那么您将遇到一个模型状态已预先填充表单值的功能。这是为了防止您需要在验证失败等情况下显示表单。
如果您对表单值感到满意并希望用户继续操作,则可以执行
this.ModelState.Clear();
在重新显示表单之前,或使用
this.RedirectToAction( ...
并将每个问题作为一个单独的请求。