ASP.NET MVC中的轮询系统

时间:2013-03-04 11:49:28

标签: asp.net-mvc-4

我想在My Page的部分显示轮询,我已经创建了这些POCO类:

public class Polls
{
    public int Id { get; set; }
    public string Question { get; set; }
    public bool Active { get; set; }
    public IList<PollOptions> PollOptions { get; set; }
}

public class PollOptions
{
    public int Id { get; set; }
    public virtual Polls Polls { get; set; }
    public string Answer { get; set; }
    public int Votes { get; set; }
}

我在ViewModel下面使用过:

public class PollViewModel
{
    public int Id { get; set; }
    public string Question { get; set; }
    public string Answer { get; set; }
}

然后,我使用上面的ViewModel将我的模型传递给我的视图:

public ActionResult Index()
{
    var poll = from p in db.Polls
               join po in db.PollOptions on p.Id equals po.Polls.Id
               where p.Active == true
               select new PollViewModel { 
                   Id=p.Id,
                   Question=p.Question,
                   Answer=po.Answer
    };

    return View(model);
}

在我的视图中我想显示我的民意调查的QuestionAnswer,我试过这段代码:

@section Polling{
    @foreach (var item in Model.Polls)
    {
        <input type="radio" /> @item.Answer
    }
}

上面的代码工作正常但我想显示Question,如下所示:

@section Polling{
    **@Model.Polls.Question**
    @foreach (var item in Model.Polls)
    {
        <input type="radio" /> @item.Answer
    }
}

我该怎么做?

PS:我的民意调查表中有一行显示在主页

1 个答案:

答案 0 :(得分:1)

民意调查与民意调查之间存在关系。所以从你的数据库中获取民意调查。并传递给它查看。此外,您已经有PollsOptions连接到他们的民意调查。无需加入两个表格。

控制器

public ActionResult Index()
{
    // get active Polls
    var poll = from p in db.Poll
               where p.Active == true
               select p;

    // pass it to the view
    return View(poll);
}

视图

@model IEnumerable<Polls>

@section Polling{
    @foreach (var question in Model)
    {
        <h2>@question.Question</h2>
        @foreach(var answer in question.PollOptions)
        {
            <input type="radio" /> @answer.Answer
        }
    }
}