Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 为什么运行时选择的单选按钮与我的编程设置不同?_Asp.net Mvc - Fatal编程技术网

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) />