在数据库MVC中的下拉列表中设置selectedvalue

时间:2017-04-20 01:09:51

标签: c# asp.net-mvc

我试图在“编辑”视图中从数据库中获取原始选定值。我需要显示原始值,然后用户可以选择其他值。

视图模型

 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);
    }

查看

 <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 个答案:

答案 0 :(得分:1)

在您的编辑GET操作方法中,设置IdProveedorSeleccionadoIdProveedorSeleccionado属性的值。

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

DropDownListFor辅助方法将从这些属性值中选择具有匹配值属性值的选项。