Asp.net mvc MVC禁用的DropDownlistValue未过帐所选密钥
我在检索dropdownlist selectedted键时遇到问题 这是我的编辑事件,当我按ID找到注册表并将其发送到视图时。 现在一切都很好Asp.net mvc MVC禁用的DropDownlistValue未过帐所选密钥,asp.net-mvc,post,dropdown,Asp.net Mvc,Post,Dropdown,我在检索dropdownlist selectedted键时遇到问题 这是我的编辑事件,当我按ID找到注册表并将其发送到视图时。 现在一切都很好 public ActionResult Edit(int id) { var model = _mapper.Mapear(_dispositivoService.ConsultarPorId(id)); model.ListaProfissionaisAtivos = new SelectList(_profissionalServi
public ActionResult Edit(int id)
{
var model = _mapper.Mapear(_dispositivoService.ConsultarPorId(id));
model.ListaProfissionaisAtivos = new SelectList(_profissionalService.ListarAtivos(), "ProfissionalID", "Nome", model.ProfissionalID);
return View(model);
}
这是我的下拉列表。一切都好。所有项目都存在,并且已选择保存在数据库中的项目ID
@Html.DropDownList("ProfissionalID", Model.ListaProfissionaisAtivos, new { @class = "control-label col-md-2", @disabled = "disabled" })
但在发布表单数据之后,除了作为DropDownList关键的ProfissionalID之外,每个属性都被填充
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(ProfissionalDispositivoViewModel model)
{
try
{
model.ListaProfissionaisAtivos = new SelectList(_profissionalService.ListarAtivos(), "ProfissionalID", "Nome", model.ProfissionalID);
if (ModelState.IsValid)
{
var dominio = _mapper.Mapear(model);
_dispositivoService.Atualizar(dominio);
return RedirectToAction("Index");
}
return View(model);
}
catch (Exception ex)
{
ViewBag.Mensagem = ex.Message;
return View("Error");
}
}
MVC似乎没有发布禁用控件的值。我的下拉列表已禁用。但是我需要保留这个属性值来保存更改而不出错。如何执行此操作并拒绝用户编辑此字段?Hi Yes禁用的控件值不会被发布。所以你能做的就是在点击按钮时启用控件,然后它就可以工作了。或者在绑定dropdownlist时,将值绑定到某个隐藏字段,然后禁用dropdownlist。现在,在表单post上,您可以从隐藏字段中获取值 请注意,“模型-视图-控制器”标记用于回答有关模式的问题。ASP.NET-MVC实现有一个特定的标记。包括属性的隐藏输入(并删除dropdownlist-没有点渲染不必要的html-只渲染与所选项目关联的显示名称),还应意识到这是html的工作方式,而不是特定于ASP.NET MVC。禁用的输入从不将其值发回服务器。