1

我有仪式模型,它有 id,日期。

我想获得日期<=今天的仪式。

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

 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);

            }

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

4

3 回答 3

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());
    }
}
于 2012-10-08T05:42:22.067 回答
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;
于 2012-10-08T05:42:26.730 回答
0

您只需在 foreach 循环内将值分配给模型。例如,

model.id = c.id;
model.date=c.date;
于 2012-10-08T05:41:58.557 回答