Asp.net mvc MVC禁用的DropDownlistValue未过帐所选密钥

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

我在检索dropdownlist selectedted键时遇到问题

这是我的编辑事件,当我按ID找到注册表并将其发送到视图时。 现在一切都很好

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。禁用的输入从不将其值发回服务器。