我试图在“编辑”视图中从数据库中获取原始选定值。我需要显示原始值,然后用户可以选择其他值。
视图模型
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>
答案 0 :(得分:1)
在您的编辑GET操作方法中,设置IdProveedorSeleccionado
和IdProveedorSeleccionado
属性的值。
vm.IdProveedorSeleccionado = local.IdProveedorSeleccionado ;
vm.IdProveedorSeleccionado = local.IdProveedorSeleccionado ;
return View(vm);
DropDownListFor
辅助方法将从这些属性值中选择具有匹配值属性值的选项。