gpt4 book ai didi

ASP.NET MVC 使用类型化模型将模型双向数据绑定(bind)到单选按钮列表

转载 作者:行者123 更新时间:2023-12-04 15:05:14 25 4
gpt4 key购买 nike

我有一个由单选按钮矩阵组成的 mvc View 。每行单选按钮都在一个组中,代表模型中的一个类型化对象。使用各种博客和帖子的指导,我已经成功地将发布的表单结果绑定(bind)到 Controller 操作中的类型化模型数组,但是似乎无法成功地反转效果并将现有模型绑定(bind)到单选按钮,同时保留它们的选中或未选中状态.

我的模型包含一个名为“AnswerValue”的属性,它介于 0 和 4 之间,应该与单选按钮名称匹配。我尝试将索引值更改为模型值“AnswerId”,但这样做的绑定(bind)不再有效(我相信索引必须从零开始)。这是我到目前为止使用的一些资源 PostArticle by Scott Hanselman到达我现在的位置。

如果有人对如何执行这两种方式绑定(bind)有任何见解,将不胜感激。

谢谢

我的 Controller :

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save([Bind(Prefix = "SurveyAnswer")] SurveyAnswer[] responses, int SurveyID)
{

我的观点:
<%
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++;
}
%>

最佳答案

单选按钮本身不识别真/假以外的值(就状态而言)。
因此,您必须将值与实际位置进行比较,并明确设置 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)%>

如果您使用的是 ViewModel,也许最好将这个逻辑问题 ( q.AnswerValue == 4) 放在那里而不是直接放在 View 中。

PS:我认为您可以删除最后一个参数,因为第一个参数已经将 ID 和名称属性设置为: "SurveyAnswer[" + questionIndex + "].AnswerValue"

关于ASP.NET MVC 使用类型化模型将模型双向数据绑定(bind)到单选按钮列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1874845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com