如何添加IList<>在ASP.NET MVC模型中?

时间:2012-06-27 03:07:23

标签: c# asp.net asp.net-mvc model

我正在尝试创建问题和答案页面。我在其中通过文本框添加问题,并希望添加4个文本框以获得答案选项。我正在使用这个模型。

public class Question
    {
        public virtual int ID { get; set; }
        public virtual QPad QPad { get; set; }
        [Display(Name = "Add Question")]
        public virtual string QuestionText { get; set; }        
        [Display(Name = "Add Options")]
        public virtual IList<string> AnswerOption { get; set; }
    }

但是现在在一个创建动作的QuestionController视图

我的控制器是:

[HttpPost]
        public ActionResult Index(int qId, Question ques )
        {
            if (ModelState.IsValid)
            {
                var QPads = _db.QPads.Single(r => r.ID == qId);
                QPads.Questions.Add(ques);
                _db.SaveChanges();
                return RedirectToAction("Index", "QPad");
            }
            else
            {
                return View(ques);
            }
        }

我想为问题文本和选项添加编辑器,我使用

<div class="editor-label">
            @Html.LabelFor(model => model.QuestionText)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.QuestionText)
            @Html.ValidationMessageFor(model => model.QuestionText)
        </div>
/// ?????What for  4 Options boxes///////?

我无法添加选项框。我在模型中使用正确的方法还是应该改变一些东西?

或者我可以自定义该用户自己选择他想要添加的选项吗?

请建议?

3 个答案:

答案 0 :(得分:1)

如果总是允许使用添加四个选项,那么我可以尝试这样的事情。

<div class="editor-label">
  @Html.LabelFor(model => model.QuestionText)
</div>
<div class="editor-field">
  @Html.EditorFor(model => model.QuestionText)
   @Html.ValidationMessageFor(model => model.QuestionText)
</div>
@for(int i = 0; i < 4; i++)
{
  <div class="editor-field">
     @Html.EditorFor(model => model.AnswerOption[i])
     @Html.ValidationMessageFor(model => model.AnswerOption[i])
  </div>
}

答案 1 :(得分:0)

当你说“选项框”时,我认为你的意思是单选按钮。如果是这样,那么你可以使用RadioButton Html助手,就像这样。

<div class="editor-field">
    @foreach(var myValue in Model.AnswerOptions) {
        @Html.RadioButton("NAME_OF_LIST_FOR_ANSWERS", myValue)
    }
</div>

答案 2 :(得分:0)

您可能会考虑将AnswerOption实体添加到数据模型中,以便定义每个问题有多少个选项。

然后你可以做类似

的事情
foreach(var option in model.options){
 @Html.EditorFor(option);
 @Html.ValidationMessageFor(option);
}