我想阻止DropDownList选择新值,但我希望保留以前选择的值,例如当我想要从数据库中更改某些值的信息时,我尝试了这样byte[] imageStream = LoadImage("myapplication.image.png");
string imageFilename = MigraDocFilenameFromByteArray(imageStream);
Image image = para.AddImage(imageFilename);
但这不保留以前的值每当我尝试这种方式的任何建议时,价值和我的申请都会被打破?
这是我的控制器方法:
$("#dropDown1").attr("disabled","disabled")
这是我试图用$ .ajax改变信息的方式,也许我应该使用PUT?
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
IQueryable<InspekcijskaKontrola> inspekcijskeKontrole = db.InspekcijskeKontrole.Include(i => i.InspekcijskaTijela).Include(i => i.Proizvod).Select(i => i);
InspekcijskaKontrola inspekcijskaKontrola = inspekcijskeKontrole.Where(i => i.InspekcijskaKontrolaId == id).Select(i => i).Single();
if (inspekcijskaKontrola == null)
{
return HttpNotFound();
}
ViewBag.InspekcijskoTijeloId = new SelectList(db.InspekcijskaTijela, "InspekcijskoTijeloId", "NazivInspekcijskogTijela", inspekcijskaKontrola.InspekcijskoTijeloId);
ViewBag.ProizvodId = new SelectList(db.Proizvodi, "ProizvodId", "NazivProizvoda", inspekcijskaKontrola.ProizvodId);
return View(inspekcijskaKontrola);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "InspekcijskaKontrolaId,InspekcijskoTijeloId,ProizvodId,DatumInspekcijskeKontrole,Rezultat,ProizvodSiguran")] InspekcijskaKontrola inspekcijskaKontrola)
{
if (ModelState.IsValid)
{
db.Entry(inspekcijskaKontrola).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.InspekcijskoTijeloId = new SelectList(db.InspekcijskaTijela, "InspekcijskoTijeloId", "NazivInspekcijskogTijela", inspekcijskaKontrola.InspekcijskoTijeloId);
ViewBag.ProizvodId = new SelectList(db.Proizvodi, "ProizvodId", "NazivProizvoda", inspekcijskaKontrola.ProizvodId);
return View(inspekcijskaKontrola);
}
答案 0 :(得分:1)
这是预期的行为。如果禁用表单元素,则在提交表单时,将不会提交该值。
如果禁用该字段,则表示您不希望用户输入此字段的值,在这种情况下,您应该在HttpPost操作方法中设置该值。
绝不仅仅依靠客户端。始终进行服务器端验证。请记住,即使您禁用表单元素,用户也可以使用他的浏览器开发工具重新启用它并提交表单。
编辑:根据您的评论,您不希望在更新记录时更新表格中的一个下拉列表值。在这种情况下,您可以在HttpPost操作中从Bind中排除该属性。
假设您不想更新InspekcijskoTijeloId
属性/列的现有值,请将其从绑定中排除。
[HttpPost]
public ActionResult Edit([Bind(Include = "InspekcijskaKontrolaId,ProizvodId,
DatumInspekcijskeKontrole,Rezultat,
ProizvodSiguran")] InspekcijskaKontrola inspekcijskaKontrola)
{
if (ModelState.IsValid)
{
db.Entry(inspekcijskaKontrola).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.InspekcijskoTijeloId = new SelectList(db.InspekcijskaTijela,
"InspekcijskoTijeloId", "NazivInspekcijskogTijela",
inspekcijskaKontrola.InspekcijskoTijeloId);
ViewBag.ProizvodId = new SelectList(db.Proizvodi,
"ProizvodId", "NazivProizvoda", inspekcijskaKontrola.ProizvodId);
return View(inspekcijskaKontrola);
}