1

私はMVC3が初めてで、何かを学ぼうとしています。Razor ビュー エンジンを使用します。mysql データベース。会社(companyID、companyNameなど)を保持するテーブルがあります。私は同じ属性を持つモデルを持っています:

public class CompanyModel{
    public int companyID;
    public string companyName;
    ......
    ....
}

会社を保持するドロップダウンリストを作成し、会社名を表示し、項目を選択すると companyID にアクセスできるようにする必要があります。テーブルをクエリして、会社のリストにすべての行を含めることができます。

List<Company> companies = new List<Company>();
companies = getCompanies();

しかし、このリストをドロップダウンリストにバインドする方法と、コントローラーからポストメソッドを呼び出した後に選択した値を取得する方法がわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

2

ビューモデルを使用できます:

public class MyViewModel
{
    [DisplayName("Company")]
    public int CompanyId { get; set; }
    public IEnumerable<SelectListItem> Companies { get; set; }
}

次に、コントローラーアクションをインスタンス化し、このビューモデルを作成してビューに渡します。

public class CompaniesController: Controller
{
    public ActionResult Index()
    {
        List<Company> companies = getCompanies();

        var model = new MyViewModel();
        model.Companies = companies.Select(x => new SelectListItem
        {
            Value = x.companyID.ToString(),
            Text = x.companyName
        });
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        // model.CompanyId will contain the selected value here

        return Content(
            string.Format("You have selected company id: {0}", model.CompanyId)
        );
    }
}

最後に、ドロップダウン リストを含む HTML フォームをレンダリングできる厳密に型指定されたビュー:

@model MyViewModel
@using (Html.BeginForm())
{
    @Html.LabelFor(x => x.CompanyId)
    @Html.DropDownListFor(x => x.CompanyId, Model.Companies)
    <button type="submit">OK</button>
}
于 2012-08-05T16:27:04.493 に答える