如何在MVC中使用@html.hiddenfor()两个视图 - 一个用于从数据库获取数据,另一个用于存储数据

时间:2014-01-22 08:35:48

标签: asp.net-mvc asp.net-mvc-4

拳头模型获取问题列表。

但是在使用@ Html.HiddenFor()等

时我无法访问它们

如果我使用@ Html.Hidden()或任何没有....的方法,这些项目是可见的。对于方法...

任何想法我该怎么做

这是我的课程

   public class QuestionModel
{
    public int Id { get; set; }
    public string QuestDes { get; set; }
    public int Aspect { get; set; }
}

 public class AnswerModel
    {
        public int Id { get; set; }

        public string SelectedAns { get; set; }
        public virtual QuestionModel Question { get; set; }
        public virtual PersonModel Person { get; set; }
    }

我的控制器代码

public ActionResult GPage2()
        {
       var tview = new Tuple<List<QuestionModel>,AnswerModel>(getQuestions(),new AnswerModel());


            return View(tview);

        }
private List<QuestionModel> getQuestions()
        {
            var qList = (from q in dbcon.Questions
                         orderby q.Id
                         select q).ToList();
            return qList;

        }

在cshtml页面

@model Tuple<List<QuestionModel>,AnswerModel>

  <td> @Html.Label(Model.Item2.SelectedAns)</td>
@Html.LabelFor(.......................) not working 

1 个答案:

答案 0 :(得分:1)

根据您发布的内容,您需要使用包含2个模型的视图模型

public class ViewModel{
    public List<QuestionModel> Questions { get; set; }
    public List<AnswerModel> Answers { get; set; }
}

然后在你的观点

@model ViewModel

使用此设置您的帮助应该工作。因为它是一个将它们放在foreach中的列表看起来像这样。

@foreach(var temp in Model.Questions){
    @Html.LabelFor(x => temp.Aspect) 
    //etc
}