Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
C# MVC5。基于数据值生成控件_C#_Asp.net Mvc_Razor_Dynamic Controls - Fatal编程技术网

C# MVC5。基于数据值生成控件

C# MVC5。基于数据值生成控件,c#,asp.net-mvc,razor,dynamic-controls,C#,Asp.net Mvc,Razor,Dynamic Controls,我有一个代码来显示测验。测验有一个问题,每个问题都有一些选择。问题在于问题和选项都有自己的类型: 问题类型-单选按钮、复选框、文本区域 选项类型-标签、文本框(用于单选按钮)、文本区域(用于 单选按钮) 因此,为了在视图中显示所有这些内容,我为“for”循环中的每个问题编写了以下代码: @if(Model.Questions[i].Type==DAL.Entities.QuestionType.radio) { @对于(int j=0;jmodel.Questions[i].Selecte

我有一个代码来显示测验。测验有一个问题,每个问题都有一些选择。问题在于问题和选项都有自己的类型:

  • 问题类型-单选按钮、复选框、文本区域
  • 选项类型-标签、文本框(用于单选按钮)、文本区域(用于 单选按钮)
因此,为了在视图中显示所有这些内容,我为“for”循环中的每个问题编写了以下代码:

@if(Model.Questions[i].Type==DAL.Entities.QuestionType.radio)
{
    @对于(int j=0;j @RadioButton(model=>model.Questions[i].SelectedOption,option.Id,new{Id=option.Id}) @if(option.OptionType==OptionType.textbox) { @Html.TextBoxFor(model=>model.Questions[i].Options[j].TextAnswer) } else if(option.OptionType==OptionType.textarea) { @Html.TextAreaFor(model=>model.Questions[i].Options[j].TextAnswer) } 其他的 { @DisplayFor(model=>option.Name) } @Html.HiddenFor(m=>m.Questions[i].Options[j].TextAnswer) }
} else if(Model.Questions[i].Type==DAL.Entities.QuestionType.ckeckbox) {
    @对于(int j=0;j @Html.CheckBoxFor(model=>model.Questions[i]。选项[j]。选中,model.Questions[i]。选项[j]。名称) @Html.DisplayFor(model=>model.Questions[i].Options[j].Name) }
} 其他的 { @Html.TextAreaFor(model=>model.Questions[i].TextAnswer) }

我应该如何正确地重新排列代码,以摆脱糟糕的条件语句,并使代码符合最佳实践?

有人能帮忙吗?!有人能帮忙吗?!
@if (Model.Questions[i].Type == DAL.Entities.QuestionType.radio)
        {
            <ul class="simple-list">
                @for (int j = 0; j < Model.Questions[i].Options.Count(); j++)
                {
                    var option = Model.Questions[i].Options[j];

                    <li>
                        @Html.RadioButtonFor(model => model.Questions[i].SelectedOption, option.Id, new { id = option.Id })
                        @if (option.OptionType == OptionType.textbox)
                        {
                            @Html.TextBoxFor(model => model.Questions[i].Options[j].TextAnswer)
                        }
                        else if (option.OptionType == OptionType.textarea)
                        {
                            @Html.TextAreaFor(model => model.Questions[i].Options[j].TextAnswer)
                        }
                        else
                        {
                            @Html.DisplayFor(model => option.Name)
                        }

                        @Html.HiddenFor(m => m.Questions[i].Options[j].TextAnswer)
                    </li>
                }
            </ul>
        }
        else if (Model.Questions[i].Type == DAL.Entities.QuestionType.ckeckbox)
        {
            <ul class="simple-list">
                @for (int j = 0; j < Model.Questions[i].Options.Count(); j++)
                {
                    <li>
                        @Html.CheckBoxFor(model => model.Questions[i].Options[j].Selected, Model.Questions[i].Options[j].Name)
                        @Html.DisplayFor(model => model.Questions[i].Options[j].Name)
                    </li>
                }
            </ul>
        }
        else
        {
            @Html.TextAreaFor(model => model.Questions[i].TextAnswer)
        }