0

私はこのコードを持っています:

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

そして、常に0から5ではなく、動的にデータを入力したいと思います。変数SelectListに上限が保存されているとしましょう。Session["upperLimit"]ビューで for ループを作成して、SelectList0 から Session に移動するにはどうすればよい["upperLimit"]ですか?

4

2 に答える 2

1

コントローラーで選択リストを作成し、代わりにそれをビューに渡します。ビューはモデルを反復するためのものです。ビジネス ロジックはコントローラーにある必要があります。

ただし、ビューでこれを行いたい場合は、次のようなことができます。

@{
    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も実際に含まれている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 に答える