我有这段代码:
columns.ForeignKey(p => p.SomeProperty, new SelectList(new[] { "0", "1", "2", "3", "4", "5" }));
我想以SelectList
的形式填充Session["upperLimit"]
,而不是总是从0到5.我们说我的上限保存在SelectList
变量中。如何在视图中创建for循环,以便["upperLimit"]
从0到会话{{1}}?
答案 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)