2

CategoryID と CategoryName を返す一般的なリスト メソッドがあります。私は研究に十分な時間を費やしましたが、それをまとめることはできません。私はMVCで非常に新しいです。

これがリポジトリ内の私の DropdownList メソッドです。データを取り戻しました... 今のところは順調です。

public List<DropdownList> GetDDl()
{

return catDDL; 
}

これが私のコントローラーコードです(試してみてください)

   IEnumerable<SelectListItem> liCat =
 userRepository.Getddl().Select(c => new SelectListItem
{
   Value = c.DropDownID.ToString(),
   Text = c.DropDownText
}
ViewBag.catItems = new SelecList(liCat,"Value","Text");

これが私の見解です

@Html.Dropdownlist("catItems","Select Category)
4

2 に答える 2

4

ViewBagやのような動的なものは避けてくださいViewData。強く型付けされたビューを使用します。

ViewModelは、ビューとアクションメソッドの間でデータを転送するために使用する単なるPOCOクラスです。ビューに固有になります。

例:商品を作成するビューを作成する場合。したがって、このようなビューモデルを作成します

public class Product
{
  public string Name { set;get;}
  public IEnumerable<SelectListItem> Categories{ get; set; }
  public string SelectedCategoryId { get; set; }
  //Other Properties as needed

}

ここで、GETアクションメソッドで、このビューモデルのオブジェクトを作成し、値を初期化してビューに送信します。

public ActionResult Create()
{
  var vm=new Product();
  vm.Categories=userRepository.Getddl().
               Select(c => new SelectListItem
                                 {
                                    Value = c.DropDownID.ToString(),
                                    Text = c.DropDownText
                                 });                    
  return View(vm);
}

Product次に、ビューをクラスに強く型付けして、Html.DropDownListForヘルパーメソッドを使用します。

@model PersonsProduct 
@using (Html.BeginForm())
{ 
  @Html.DropDownListFor(x => x.SelectedCategoryId, 
                       new SelectList(Model.Categories,"Value","Text"), "Select")
  <input type="submit" value="save" />
}

これで、HttpPostで、次のようなフォーム値を取得できます。

[HttpPost]
public ActionResult Create(Product model)
{
  if(ModelState.IsValid)
  {
     //check model.SelectedCategoryId
     //save and redirect
  }
  //to do :reload the dropdown again.
  return view(model);
}
于 2012-10-13T22:56:57.747 に答える
1

次のようにする必要があります。

コントローラ:

IEnumerable<SelectListItem> liCat = userRepository.Getddl().Select(c => new SelectListItem
{
   Value = c.DropDownID.ToString(),
   Text = c.DropDownText
}

ViewBag.catItems = liCat

意見:

@Html.Dropdownlist("catItems", ViewBag.catItems)
于 2012-10-13T22:44:04.473 に答える