ASP.NET MVC 5 无法在视图上绑定单选按钮列表
ASP.NET MVC 5 Can't bind radio button list on View
我在将模型绑定到视图时遇到问题。当我尝试使用我的问题模型创建单选按钮组时,查看发布每个布尔值 false。
型号
编辑: 将字段更改为 属性。
public class Question
{
public string Name { get; set; }
public List<Answer> Answers { get; set; }
public Question()
{
Answers = new List<Answer>();
}
}
public class Answer
{
public string AnswerText { get; set; }
public bool Checked { get; set; }
public long Id { get; set; }
public long QuestionId { get; set; }
}
查看
for (int i = 0; i < Model.Answers.Count; i++)
{
@Html.HiddenFor(m => m.Answers[i].Id)
@Html.HiddenFor(m => m.Answers[i].AnswerText)
@Html.HiddenFor(m => m.Answers[i].QuestionId)
@Html.DisplayFor(m => m.Answers[i].AnswerText)
@Html.RadioButtonFor(m => Model.Name, Model.Answers[i].Checked)
<br>
}
编辑:
第
页
调试
try this, it will work
@{
for (int i = 0; i < Model.Answers.Count; i++)
{
<div>
@if(Model.Answers[i].Checked)
{
@Html.RadioButtonFor(model => Model.Name,Model.Answers[i].Id, new { id = "answer" +i})
}
</div>
}
}
RadioButtonFor
的第二个参数不是bool
表示是否显示select单选按钮。它只是基于此的值:
Html.RadioButtonFor(model => property, object value, object htmlAttributes)
Model => property: it refers to a model property.
Object value: This value will be posted to server if radio button is selected.
所以预计它不会显示为 selected。
你需要做这样的事情:
@for (int i = 0; i < Model.Answers.Count; i++)
{
@Html.RadioButtonFor(m => Model.Name, Model.Answers[i].Id)
}
这样你就可以将值绑定到 id,当你 post 你将得到正确的 id 来处理。
现在,如果您设置 Model.Name = SomeIdFromAnswers
,则相应的单选按钮将被 selected。
我在将模型绑定到视图时遇到问题。当我尝试使用我的问题模型创建单选按钮组时,查看发布每个布尔值 false。
型号
编辑: 将字段更改为 属性。
public class Question
{
public string Name { get; set; }
public List<Answer> Answers { get; set; }
public Question()
{
Answers = new List<Answer>();
}
}
public class Answer
{
public string AnswerText { get; set; }
public bool Checked { get; set; }
public long Id { get; set; }
public long QuestionId { get; set; }
}
查看
for (int i = 0; i < Model.Answers.Count; i++)
{
@Html.HiddenFor(m => m.Answers[i].Id)
@Html.HiddenFor(m => m.Answers[i].AnswerText)
@Html.HiddenFor(m => m.Answers[i].QuestionId)
@Html.DisplayFor(m => m.Answers[i].AnswerText)
@Html.RadioButtonFor(m => Model.Name, Model.Answers[i].Checked)
<br>
}
编辑:
第
页调试
try this, it will work
@{
for (int i = 0; i < Model.Answers.Count; i++)
{
<div>
@if(Model.Answers[i].Checked)
{
@Html.RadioButtonFor(model => Model.Name,Model.Answers[i].Id, new { id = "answer" +i})
}
</div>
}
}
RadioButtonFor
的第二个参数不是bool
表示是否显示select单选按钮。它只是基于此的值:
Html.RadioButtonFor(model => property, object value, object htmlAttributes)
Model => property: it refers to a model property.
Object value: This value will be posted to server if radio button is selected.
所以预计它不会显示为 selected。
你需要做这样的事情:
@for (int i = 0; i < Model.Answers.Count; i++)
{
@Html.RadioButtonFor(m => Model.Name, Model.Answers[i].Id)
}
这样你就可以将值绑定到 id,当你 post 你将得到正确的 id 来处理。
现在,如果您设置 Model.Name = SomeIdFromAnswers
,则相应的单选按钮将被 selected。