Asp.net mvc 为什么运行时选择的单选按钮与我的编程设置不同?
我有如下数据模型类:Asp.net mvc 为什么运行时选择的单选按钮与我的编程设置不同?,asp.net-mvc,Asp.net Mvc,我有如下数据模型类: public class QuizItem { public int QuizItemId { get; set; } public string Question { get; set; } public IEnumerable<Choice> Choices { get; set; } } public class HomeController : Controller {
public class QuizItem
{
public int QuizItemId { get; set; }
public string Question { get; set; }
public IEnumerable<Choice> Choices { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index()
{
IEnumerable<Choice> choices = new Choice[]
{
new Choice{ChoiceId=1,Description="Black",IsCorrect=true},
new Choice{ChoiceId=2,Description="Red",IsCorrect=false},
new Choice{ChoiceId=3,Description="Yellow",IsCorrect=false}
};
QuizItem qi = new QuizItem { QuizItemId = 1,
Question = "What color is your hair?",
Choices = choices };
return View(qi);
}
<fieldset>
<legend>@Model.Question</legend>
@foreach (var x in Model.Choices)
{
<text>@Html.RadioButton(Model.QuizItemId.ToString(), x.Description, x.IsCorrect)
@x.Description<br /></text>
}
</fieldset>
我在控制器操作中进行了如下设置:
public class QuizItem
{
public int QuizItemId { get; set; }
public string Question { get; set; }
public IEnumerable<Choice> Choices { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index()
{
IEnumerable<Choice> choices = new Choice[]
{
new Choice{ChoiceId=1,Description="Black",IsCorrect=true},
new Choice{ChoiceId=2,Description="Red",IsCorrect=false},
new Choice{ChoiceId=3,Description="Yellow",IsCorrect=false}
};
QuizItem qi = new QuizItem { QuizItemId = 1,
Question = "What color is your hair?",
Choices = choices };
return View(qi);
}
<fieldset>
<legend>@Model.Question</legend>
@foreach (var x in Model.Choices)
{
<text>@Html.RadioButton(Model.QuizItemId.ToString(), x.Description, x.IsCorrect)
@x.Description<br /></text>
}
</fieldset>
公共类HomeController:控制器
{
公共行动结果索引()
{
IEnumerable choices=新选项[]
{
新选项{ChoiceId=1,Description=“Black”,IsCorrect=true},
新选项{ChoiceId=2,Description=“Red”,IsCorrect=false},
新选项{ChoiceId=3,Description=“Yellow”,IsCorrect=false}
};
QuizItem qi=新QuizItem{QuizItemId=1,
问=“你的头发是什么颜色的?”,
选择=选择};
返回视图(qi);
}
最后,我的看法是:
@model MvcApplication1.Models.QuizItem
@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
<fieldset>
<legend>QuizItem</legend>
<div class="display-label">
Question</div>
<div class="display-field">@Model.Question</div>
@foreach (var x in Model.Choices)
{
<text>@Html.RadioButtonFor(y => Model.QuizItemId, x.Description, new { @checked = x.IsCorrect })
@x.Description<br /></text>
}
</fieldset>
@model mvcapapplication1.Models.QuizItem
@{
ViewBag.Title=“Index”;
}
指数
奎兹特姆
问题:
@模型问题
@foreach(Model.Choices中的var x)
{
@RadioButtonOn(y=>Model.QuizItemId,x.Description,新的{@checked=x.IsCorrect})
@x、 说明
}
在运行时,所选选项应为黑色。但会选择黄色。如何解决此问题
您需要将@checked属性设置为字符串“checked”,而不是true/false
new { @checked = x.IsCorrect ? "checked" : string.Empty }
您需要将@checked属性设置为字符串“checked”,而不是true/false
new { @checked = x.IsCorrect ? "checked" : string.Empty }
我发现解决办法如下:
public class QuizItem
{
public int QuizItemId { get; set; }
public string Question { get; set; }
public IEnumerable<Choice> Choices { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index()
{
IEnumerable<Choice> choices = new Choice[]
{
new Choice{ChoiceId=1,Description="Black",IsCorrect=true},
new Choice{ChoiceId=2,Description="Red",IsCorrect=false},
new Choice{ChoiceId=3,Description="Yellow",IsCorrect=false}
};
QuizItem qi = new QuizItem { QuizItemId = 1,
Question = "What color is your hair?",
Choices = choices };
return View(qi);
}
<fieldset>
<legend>@Model.Question</legend>
@foreach (var x in Model.Choices)
{
<text>@Html.RadioButton(Model.QuizItemId.ToString(), x.Description, x.IsCorrect)
@x.Description<br /></text>
}
</fieldset>
@模型问题
@foreach(Model.Choices中的var x)
{
@RadioButton(Model.QuizItemId.ToString(),x.Description,x.IsCorrect)
@x、 说明
}
我找到了如下解决方案:
public class QuizItem
{
public int QuizItemId { get; set; }
public string Question { get; set; }
public IEnumerable<Choice> Choices { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index()
{
IEnumerable<Choice> choices = new Choice[]
{
new Choice{ChoiceId=1,Description="Black",IsCorrect=true},
new Choice{ChoiceId=2,Description="Red",IsCorrect=false},
new Choice{ChoiceId=3,Description="Yellow",IsCorrect=false}
};
QuizItem qi = new QuizItem { QuizItemId = 1,
Question = "What color is your hair?",
Choices = choices };
return View(qi);
}
<fieldset>
<legend>@Model.Question</legend>
@foreach (var x in Model.Choices)
{
<text>@Html.RadioButton(Model.QuizItemId.ToString(), x.Description, x.IsCorrect)
@x.Description<br /></text>
}
</fieldset>
@模型问题
@foreach(Model.Choices中的var x)
{
@RadioButton(Model.QuizItemId.ToString(),x.Description,x.IsCorrect)
@x、 说明
}
JK是对的,同时他是错的
checked属性实际上应该与“checked”值一起使用,用于选中无线电的正确有效W3C html标记是:
<input type="radion" name="something" value="1" checked="checked">
但是,当您输出以下内容时:
<input type="radion" name="something" value="1" checked="">
浏览器仍将其呈现为选中的收音机。您自己的解决方案是迄今为止最好的。JK是对的,但他是错的 checked属性实际上应该与“checked”值一起使用,用于选中无线电的正确有效W3C html标记是:
<input type="radion" name="something" value="1" checked="checked">
但是,当您输出以下内容时:
<input type="radion" name="something" value="1" checked="">
浏览器仍将其呈现为选中的单选按钮。您自己的解决方案是迄今为止最好的。我发现单选按钮助手太麻烦,无法正常工作 您最好自己编写单选按钮的原始HTML。当您有多个选项时尤其如此:
<input type="radio" id="ques1_choice1" name="quizQuestion1" value="1" @(x.IsCorrect ? "checked=\"checked\"" : null) />
<input type="radio" id="ques1_choice2" name="quizQuestion1" value="2" @(x.IsCorrect ? "checked=\"checked\"" : null) />
我发现单选按钮助手太麻烦,无法正常工作 您最好自己编写单选按钮的原始HTML。当您有多个选项时尤其如此:
<input type="radio" id="ques1_choice1" name="quizQuestion1" value="1" @(x.IsCorrect ? "checked=\"checked\"" : null) />
<input type="radio" id="ques1_choice2" name="quizQuestion1" value="2" @(x.IsCorrect ? "checked=\"checked\"" : null) />