Jer*_*emy 6 asp.net data-binding asp.net-mvc strong-typing
我有一个由单选按钮矩阵组成的mvc视图.每行单选按钮都在一个组中,表示模型中的类型化对象.使用各种博客和帖子的指导,我已成功将发布的表单结果绑定到控制器操作中的类型化模型数组,但似乎无法成功反转效果并将现有模型绑定到单选按钮,同时保留其选定或未选定状态.
我的模型包含一个名为"AnswerValue"的属性,该属性介于0和4之间,并且应与radiobutton名称匹配.我尝试将索引值更改为模型值"AnswerId",但这样做的绑定工作不再有效(我相信索引必须为零).这是我迄今为止使用的一些资源,以及Scott Hanselman 撰写的文章,以了解我现在所处的位置.
如果有人对如何执行这种双向绑定有任何见解,那将非常感激.
谢谢
我的控制器:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save([Bind(Prefix = "SurveyAnswer")] SurveyAnswer[] responses, int SurveyID)
{
Run Code Online (Sandbox Code Playgroud)
我的看法:
<%
int questionIndex = 0;
foreach (SurveyAnswer q in Model)
{
%>
<%=Html.Hidden("SurveyAnswer.Index", questionIndex)%>
<%=Html.Hidden("SurveyAnswer["+questionIndex+"].AnswerId", q.AnswerId) %>
<tr>
<td style='background-color: #aaaaaa;padding-left: 10px; padding-right: 10px;border-right: solid 1px #fffff;'><%= questionIndex+1 %></td>
<td style='text-align: right;'><%= q.Question.DisplayValue %></td>
<td><%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "0", new { name = "SurveyAnswer[" + questionIndex + "].AnswerValue"})%></td>
<td><%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "1", new { name = "SurveyAnswer[" + questionIndex + "].AnswerValue" })%></td>
<td><%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "2", new { name = "SurveyAnswer[" + questionIndex + "].AnswerValue" })%></td>
<td><%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "3", new { name = "SurveyAnswer[" + questionIndex + "].AnswerValue"})%></td>
<td><%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "4", new { name = "SurveyAnswer[" + questionIndex + "].AnswerValue" })%></td>
</tr>
<%
questionIndex++;
}
%>
Run Code Online (Sandbox Code Playgroud)
单选按钮本身不识别True/False以外的值(就状态而言).因此,您必须将该值与实际位置进行比较,并明确设置TRUE/FALSE状态.
尝试使用单选按钮帮助程序的这个重载.
<%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "0", q.AnswerValue == 0)%>
<%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "1", q.AnswerValue == 1)%>
<%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "2", q.AnswerValue == 2)%>
<%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "3", q.AnswerValue == 3)%>
<%=Html.RadioButton("SurveyAnswer[" + questionIndex + "].AnswerValue", "4", q.AnswerValue == 4)%>
Run Code Online (Sandbox Code Playgroud)
如果您正在使用ViewModel,也许最好将此逻辑问题(q.AnswerValue == 4)放在那里而不是直接放在视图中.
PS:我认为您可以删除最后一个参数,因为第一个参数已经将ID和名称属性设置为: "SurveyAnswer[" + questionIndex + "].AnswerValue"
| 归档时间: |
|
| 查看次数: |
6502 次 |
| 最近记录: |