これを行うためのより良い方法は、ビュー/ページごとにビュー モデルを作成し、(必要に応じて) データを入力して、ビュー/ページに返すことです。ドメイン モデルをビュー/ページに戻さないでください。
以下に示すコードは ASP.NET MVC3 用ですが、状況に簡単に関連付けることができます。私の回答に反対票を投じないでください :)
カテゴリに含める必要がある (選択リストに表示される) 新しい製品を作成していると仮定すると、Create view/page and action メソッドが必要になります。次のビューモデルを作成します。
public class ProductCreateViewModel
{
// Include other properties if needed, these are just for demo purposes
public string Name { get; set; }
public string SKU { get; set; }
public string LongDescription { get; set; }
// This is the unique identifier of your category,
// i.e. foreign key in your product table
public int CategoryId { get; set; }
// This is a list of all your categories populated from your category table
public IEnumerable<Category> Categories { get; set; }
}
カテゴリ クラス:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
Create ビューには、次のように表示されます。
@model MyProject.ViewModels.ProductCreateViewModel
@using (Html.BeginForm())
{
<table>
<tr>
<td><b>Category:</b></td>
<td>
@Html.DropDownListFor(x => x.CategoryId,
new SelectList(Model.Categories, "Id", "Name", Model.CategoryId),
"-- Select --"
)
@Html.ValidationMessageFor(x => x.CategoryId)
</td>
</tr>
</table>
<!-- Add other HTML controls if required and your submit button -->
}
Create アクション メソッド:
public ActionResult Create()
{
ProductCreateViewModel viewModel = new ProductCreateViewModel
{
// Here you do a database call to populate your dropdown
Categories = categoryService.GetAllCategories()
};
return View(viewModel);
}
これが役立つことを願っています。