2017-04-20 17 views
0

編集ビューでデータベースから元の選択した値を取得しようとしています。元の値を表示する必要があり、そこから別の値を選択することができます。あなたの編集GET行為でデータベースMVCからドロップダウンリストで選択した値を設定する

のViewModel

public Local Local { get; set; } 
    public SelectList Estados { get; set; } 
    public int IdEstadoSeleccionado { get; set; } 
    public SelectList Proveedores { get; set; } 
    public int IdProveedorSeleccionado { get; set; } 

    public LocalEditarViewModel(Local local, List<Estado> estados, List<Proveedor> proveedores,int estadoid) 
    { 
     this.Local = local; 
     this.Estados = new SelectList(estados, "Id", "State"); 
     this.Proveedores = new SelectList(proveedores, "Id", "Nombre"); 


    } 

コントローラ

public ActionResult Edit(int? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     Local local = db.Locales.Find(id); 


     List<Estado> estados; 
     List<Proveedor> proveedores; 
     using (AutoContex db = new AutoContex()) 
     { 
      estados = db.Estados.ToList(); 
      proveedores = db.Proveedores.ToList(); 
     } 

     LocalEditarViewModel vm = new LocalEditarViewModel(local, estados, proveedores); 



     if (local == null) 
     { 
      return HttpNotFound(); 
     } 

     Session["LocalId"] = local.Id; 
     return View(vm); 
    } 


    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit(LocalEditarViewModel vm) 
    { 
     using (AutoContex db = new AutoContex()) 
     { 
      if (ModelState.IsValid) 
      { 
       string id = Session["LocalId"].ToString(); 
       int localId = 0; 
       int.TryParse(id, out localId); 
       vm.Local.Id = localId; 

       vm.Local.Proveedor = db.Proveedores.Find(vm.IdProveedorSeleccionado); 
       vm.Local.Estado = db.Estados.Find(vm.IdEstadoSeleccionado); 

       Local original = db.Locales.Find(localId); 

       original.Estado = vm.Local.Estado; 
       original.Proveedor = vm.Local.Proveedor; 
       original.Id = localId; 
       original.Direccion = vm.Local.Direccion; 
       original.FechaIngreso = vm.Local.FechaIngreso; 
       //original.FechaInstalacion = vm.Local.FechaInstalacion; 
       original.Localidad = vm.Local.Localidad; 
       original.NombreComercio = vm.Local.NombreComercio; 
       original.NombreComercioUnificado = vm.Local.NombreComercioUnificado; 
       original.Provincia = vm.Local.Provincia; 
       original.Telefono = vm.Local.Telefono; 
       original.ViejoId = vm.Local.ViejoId; 
       original.NuevoId = vm.Local.NuevoId; 

       db.SaveChanges(); 


      } 
     } 
     return View(vm); 
    } 

VIEW

<div class="form-group"> 
     @Html.LabelFor(model => model.Estados, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownListFor(model => model.IdEstadoSeleccionado, Model.Estados) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.Proveedores, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownListFor(model => model.IdProveedorSeleccionado, Model.Proveedores,"--Select--") 

     </div> 

答えて

1

イオン法では、IdProveedorSeleccionadoIdProveedorSeleccionadoの値を設定します。

vm.IdProveedorSeleccionado = local.IdProveedorSeleccionado ; 
vm.IdProveedorSeleccionado = local.IdProveedorSeleccionado ; 
return View(vm); 

DropDownListForヘルパーメソッドは、これらのプロパティ値のようvalue属性の値と一致しているオプションを選択します。

+1

それは働いた!ありがとうございました!! – EmiL

関連する問題