1

ジョブ ロールの値を取り込むためのテキスト ボックスがあります。ただし、これはデータベース側の特定の数のロールに制限されています。したがって、有効な役割のみを含むドロップダウンリストを使用する方が理にかなっています。これを設定しようとしていますが、問題が発生しています。

ビューに次のコードを配置しました。

<p>
    @Html.LabelFor(m => m.Role)
    @Html.DropDownListFor(m=>m.Roles)
    @Html.ValidationMessageFor(m => m.Role)
</p>

これは私のモデルでは:

public List<string> Roles
    {
        get
        {
            return new {"Author","Underwriter" };
        }
    }

ただし、これはコンパイルされません。私が間違っていることはありますか?

4

2 に答える 2

6

ドロップダウン リストを作成するには、ビュー モデルに 2 つのプロパティが必要です。選択した値を保持するスカラー プロパティと、表示する使用可能なアイテムのリストを含むコレクション プロパティです。

いつものように、ビューモデルを書くことから始めます:

public class MyViewModel
{
    [Required]
    [DisplayName("Role")]
    public string SelectedRole { get; set; }

    public IEnumerable<SelectListItem> Roles 
    {
        get
        {
            return new[]
            {
                new SelectListItem { Value = "Author", Text = "Author" },
                new SelectListItem { Value = "Underwriter", Text = "Underwriter" }
            };
        }
    }
}

次に、このモデルをビューに渡すコントローラー アクション:

public class HomeController: Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel();
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        return Content("Thanks for selecting role: " + model.SelectedRole);
    }
}

最後に、対応する厳密に型指定されたビュー:

@model MyViewModel
@using (Html.BeginForm())
{
    @Html.LabelFor(m => m.SelectedRole)
    @Html.DropDownListFor( m => m.SelectedRole, Model.Roles, "-- Role --")
    @Html.ValidationMessageFor(m => m.SelectedRole)

    <button type="submit">OK</button>
}
于 2012-07-06T11:34:01.293 に答える
0

List<string>作成ステートメントに追加

public List<string> Roles
    {
        get
        {
            return new List<string> {"Author","Underwriter" };
        }
    }
于 2012-07-06T11:34:09.133 に答える