对于视图中的循环

时间:2012-05-29 11:44:52

标签: c# .net asp.net-mvc asp.net-mvc-3 linq

我有这段代码:

columns.ForeignKey(p => p.SomeProperty, new SelectList(new[] {  "0", "1", "2", "3", "4", "5" }));

我想以SelectList的形式填充Session["upperLimit"],而不是总是从0到5.我们说我的上限保存在SelectList变量中。如何在视图中创建for循环,以便["upperLimit"]从0到会话{{1}}?

2 个答案:

答案 0 :(得分:1)

我会在Controller中创建选择列表并将其传递给视图。 视图用于迭代模型。业务逻辑应该在控制器中。

但是,如果您仍想在视图中执行此操作,则可以执行以下操作:

@{
    var list = new SelectList(Enumerable.Range(0, (int)Session["upperLimit"] + 1));
    columns.ForeignKey(p => p.SomeProperty, list);
}

答案 1 :(得分:1)

对于初学者来说,不要将上限放在Session中,如果你在视图中需要它,Model就是一个完美的用例。其次,SelectList也应该真正包含在Model中,可以节省您在视图中添加逻辑,这意味着您甚至不需要Limit中的Model

假设您的模型具有以下属性:

public class MyModel
{
    public string SomeProperty { get; set; }
    public SelectList MyNumbers { get; set; }
}

然后您的控制器操作可以执行以下操作:

public ActionResult Index(int upperLimit) //I'm assuming that's where the limit is
{
    var model = new MyModel();

    model.MyNumbers = new SelectList(Enumerable.Range(0, upperLimit + 1));

    return View(model);
}

然后在你看来做:

@Html.DropDownListFor(m => m.SomeProperty, Model.MyNumbers)