Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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 3 强类型RadioButtonList MVC 3_Asp.net Mvc 3_Radiobuttonlist_Strong Typing - Fatal编程技术网

Asp.net mvc 3 强类型RadioButtonList MVC 3

Asp.net mvc 3 强类型RadioButtonList MVC 3,asp.net-mvc-3,radiobuttonlist,strong-typing,Asp.net Mvc 3,Radiobuttonlist,Strong Typing,这可能吗?也许我很愚蠢,但我不能将这里或其他地方的任何答案应用于我的具体情况 我想做的是向我的视图传递一个强类型的测验模型。测验有一系列问题。这个问题有很多可能的答案 问题如下: 问题.案文 问题.身份证 问题。可能的答案 可能的答案如下: 可能的答案Id 可能的替代值 可能的答案标签 可能的答案已选定 我想将测验传递给视图,视图应该设置表单,其中每个问题都有一个radiobuttonlist(group)可能的答案 问题1文本废话废话: <input id="1_1" type=

这可能吗?也许我很愚蠢,但我不能将这里或其他地方的任何答案应用于我的具体情况

我想做的是向我的视图传递一个强类型的测验模型。测验有一系列问题。这个问题有很多可能的答案

问题如下:

  • 问题.案文
  • 问题.身份证
  • 问题。可能的答案
可能的答案如下:

  • 可能的答案Id
  • 可能的替代值
  • 可能的答案标签
  • 可能的答案已选定
我想将测验传递给视图,视图应该设置表单,其中每个问题都有一个
radiobuttonlist(group)
可能的答案

问题1文本废话废话:

<input id="1_1" type="radio" name="question1"  value="1" />
<input id="1_2" type="radio" name="question1"  value="2" />
<input id="1_3" type="radio" name="question1"  value="3" />
所以我不明白。。这:

@foreach (var item in Model.Questions)
{
    @foreach (var jitem in item.PossibleAnswers)
    {
        @Html.RadioButtonFor(x => item.QuestionId, jitem.Value)

    }

 }
甚至都不接近。。有人能解释一下我做错了什么吗?我的模型错了吗?MVC能做到这一点吗?我是否需要将可能的Swer型号类型更改为RadioButtonListItems或其他类型?救命啊

------------------------------------**更新**----------------

for(int i=0;i @RadioButtonListFor(m=>m.Questions.ElementAt(i).AnswerRadios, “问题”+i); } 这个代码似乎有效!至少它会输出一些单选按钮。。但它将html作为特殊实体输出

<td id="Question0_Container">

    <input id="Question0_1" name="Question0_value" type="radio" value="17" />
    <label for="Question0_1">1</label>

    <input id="Question0_2" name="Question0_value" type="radio" value="18" />
    <label for="Question0_2">2</label>

    <input id="Question0_3" name="Question0_value" type="radio" value="19" />
    <label for="Question0_3">3</label>

    <input id="Question0_4" name="Question0_value" type="radio" value="20" />
    <label for="Question0_4">4</label>

    <input id="Question0_5" name="Question0_value" type="radio" value="21" />
    <label for="Question0_5">5</label>

</td>

1.
2.
3.
4.
5.

是我使用的。我做了一些小的修改,但效果很好。

也许我遗漏了一些东西,但为什么您要强制您的模型使用RadioButtonList类型?我希望我的模型是答案。。。不是RadioButtonList项。。这就是我的问题所在。我必须将我的模型修改为HTMLControl?对我来说,这违背了拥有强类型模型的目的。如果我被迫这样做,我只需要使用表单集合访问结果,因为我无论如何都需要解析radiobuttonlistitems。radiobuttonlistitems是泛型,因此您可以修改类型。。。在我看来,你的模型应该直接反映你的观点。如果您的页面上有一个选择列表,那么您的模型应该有IEnumerable。当表格发回时,你只关心每个问题的答案是否正确?有了RadioButtonListViewModel这正是你所能得到的。我并不自称是专家。。但是视图或框架不应该做转换模型的工作吗?selectlistitem是一个特定的东西,它不是我正在建模的东西。它可以做成它,但它不是自然的。也许就观点而言,它是,但为什么要强烈地键入它呢?我还不如用取景袋不?好处是什么(真正的问题)。特别是,如果我必须为模型中特定于表示的对象选择类型,那么为什么不使用forms集合呢?有没有可能制作一个htmlhelper,将一个普通的集合作为参数,在这方面你是对的。我想当我使用MVC时,我总是有一个数据库模型和一个视图模型。我总是在控制器和存储库之间进行转换(AutoMapper很好)。通常,模型和viewmodel不会映射为1,因为会有您提到的特定于表示的元素。我不经常使用viewbag,因为我可以使用viewmodel作为get的返回结果以及操作的post参数。好的,谢谢John。我有一个db模型/业务对象,我还为视图创建viewmodels,因为视图将包含任何业务对象组合。但是仍然不确定我们是否应该为模型创建视图特定的类型(例如:radiobuttonlistitems)。我不为viewmodel创建文本框/复选框/选择框类型,对吗?显然这是一种方法。如果我更聪明,我会创建一个radionbuttonlist帮助程序,它将IList/IEnumerable集合作为参数之一;')
@for (int i = 0; i < Model.Questions.Count(); i++)
{      
    <p>@Model.Questions.ElementAt(i).QuestionText</p>
    @Html.RadioButtonListFor(m => m.Questions.ElementAt(i).AnswerRadios,
        "Question" + i);        
}
<td id="Question0_Container">

    <input id="Question0_1" name="Question0_value" type="radio" value="17" />
    <label for="Question0_1">1</label>

    <input id="Question0_2" name="Question0_value" type="radio" value="18" />
    <label for="Question0_2">2</label>

    <input id="Question0_3" name="Question0_value" type="radio" value="19" />
    <label for="Question0_3">3</label>

    <input id="Question0_4" name="Question0_value" type="radio" value="20" />
    <label for="Question0_4">4</label>

    <input id="Question0_5" name="Question0_value" type="radio" value="21" />
    <label for="Question0_5">5</label>

</td>