0

我有这个代码:

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

而且我想以动态方式填充SelectList,而不是总是从 0 到 5。假设我将上限保存在Session["upperLimit"]变量中。如何在视图中创建一个 for 循环,以便SelectList从 0 转到 Session ["upperLimit"]

4

2 回答 2

1

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

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

@{
    var list = new SelectList(Enumerable.Range(0, (int)Session["upperLimit"] + 1));
    columns.ForeignKey(p => p.SomeProperty, list);
}
于 2012-05-29T11:46:38.603 回答
1

对于初学者来说,不要将上限放在 中Session,如果您在视图中需要它,这Model是一个完美的用例。其次,SelectList也应该包含在real 中,节省您将逻辑放入视图中,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)
于 2012-05-29T11:57:35.567 回答