我有这个代码:
columns.ForeignKey(p => p.SomeProperty, new SelectList(new[] { "0", "1", "2", "3", "4", "5" }));
而且我想以动态方式填充SelectList
,而不是总是从 0 到 5。假设我将上限保存在Session["upperLimit"]
变量中。如何在视图中创建一个 for 循环,以便SelectList
从 0 转到 Session ["upperLimit"]
?
我有这个代码:
columns.ForeignKey(p => p.SomeProperty, new SelectList(new[] { "0", "1", "2", "3", "4", "5" }));
而且我想以动态方式填充SelectList
,而不是总是从 0 到 5。假设我将上限保存在Session["upperLimit"]
变量中。如何在视图中创建一个 for 循环,以便SelectList
从 0 转到 Session ["upperLimit"]
?
我会在控制器中创建选择列表并将其传递给视图。View 用于迭代模型。业务逻辑应该在控制器中。
但是,如果您仍然想在视图中执行此操作,您可以执行以下操作:
@{
var list = new SelectList(Enumerable.Range(0, (int)Session["upperLimit"] + 1));
columns.ForeignKey(p => p.SomeProperty, list);
}
对于初学者来说,不要将上限放在 中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)