如何获取Model中的数据列表?

时间:2012-10-08 05:35:50

标签: c# asp.net-mvc

我有仪式模型,它有id,date。

我想参加日期< =今天的仪式。

这是我在服务类中的功能。

 public virtual IList<Ceremony> GetAllCeremonyByDate(DateTime currentDate)
        {

            var query = from c in _ceremonyRepository.Table
                        where c.ceremony_date >= currentDate
                        select c;
            var countries = query.ToList();
            return countries;

        }

这是我的控制器。

   public ActionResult DetailForm()
            {

                Ceremony model = new Ceremony();

                var ceremonyDate = _ceremonyService.GetAllCeremonyByDate(DateTime.Now);
                if (ceremonyDate.Count == 0)
                    return Content("No ceremony can be loaded");

                if (ceremonyDate.Count > 0)
                {

                    foreach (var c in ceremonyDate)
                       // My problem


                }

                return View(model);

            }

我不知道如何为模型赋值。

3 个答案:

答案 0 :(得分:1)

视图期待什么类型?

如果它是IEnumerable<Ceremony>(或类似的东西),那么您的控制器只需要:

public ActionResult DetailForm()
{
    var model = _ceremonyService.GetAllCeremonyByDate(DateTime.Now);

    if (model.Count == 0)
    {
        return Content("No ceremony can be loaded");
    }
    else
    {
        return View(model);
    }
}

如果视图需要Ceremony,那么您需要决定发回哪一个。如果您只想要第一个有效的那个,那么您可以执行以下操作:

public ActionResult DetailForm()
{
    var ceremonies = _ceremonyService.GetAllCeremonyByDate(DateTime.Now);

    if (ceremonies.Count == 0)
    {
        return Content("No ceremony can be loaded");
    }
    else
    {
        return View(ceremonies.First());
    }
}

答案 1 :(得分:1)

由于您要返回IList<Ceremony>视图,因此应接受与此类型兼容的模型。例如:

<强>控制器

var ceremonies = _ceremonyService.GetAllCeremonyByDate(DateTime.Now);

if (ceremonies.Count == 0)
{
   return Content("No ceremony can be loaded");
}
else
{
    return View(ceremonies);
}

查看

@model IEnumerable<Ceremony>

然后你可以在这样的视图中列举你的仪式:

@foreach (var ceremony in Model)
{
  ...
}

我还认为你需要纠正你的逻辑。而不是>=使用<=

var query = from c in _ceremonyRepository.Table
            where c.ceremony_date <= currentDate
            select c;

答案 2 :(得分:0)

您只需将值分配给foreach循环内的模型瞬间即可。例如,

model.id = c.id;
model.date=c.date;