首页 > 解决方案 > 调用创建控件时 Viewbag 返回 null

问题描述

我的 viewbag 在视图中正确显示了值,但是当调用创建控件时,这些值是 null,因此由于这些值是另一个表中的外键,因此出现异常:

SqlException:INSERT 语句与 FOREIGN KEY >约束“FK_dbo.INFO_APONTAMENTO_dbo.BARCO_Barco_Id”冲突。冲突 > 发生在数据库“RVEIO”、表“dbo.BARCO”、“Id”列中。

这是代码:

public ActionResult Create()
    {
        ViewBag.SubCodigos = new SelectList(_subCodigosOperacionaisRepository.GetAll(), "Id", "Codigo");
        ViewBag.Codigos = new SelectList(_codigosOperacionaisService.GetAll(), "Id", "Codigo");
        ViewBag.LocalDaOperacao = new SelectList(_localDaOperacaoAppService.GetAll(), "Id", "Nome");
        ViewBag.Barcos = new SelectList(_barcoRepository.GetAll(), "Id", "Nome");
        return View();
    }
 [HttpPost]
 public ActionResult Create(ApontamentoViewModel apontamentoViewModel)
    {
        if (!ModelState.IsValid)
        {
            return View(apontamentoViewModel);               
        }
        ViewBag.Codigos = new SelectList(_codigosOperacionaisService.GetAll(), "Id", "Codigo", apontamentoViewModel.InfoApontamento.CodigosDeOperacao_Id);
        ViewBag.SubCodigos = new SelectList(_subCodigosOperacionaisRepository.GetAll(), "Id", "Codigo", apontamentoViewModel.InfoApontamento.SubCodigosDeOperacao_Id);
        ViewBag.LocalDaOperacao = new SelectList(_localDaOperacaoAppService.GetAll(), "Id", "Nome", apontamentoViewModel.InfoApontamento.LocalDaOperacao_Id);
        ViewBag.Barcos = new SelectList(_barcoRepository.GetAll(), "Id", "Nome", apontamentoViewModel.InfoApontamento.Barco_Id);

        var apontamento = _apontamentoAppService.Add(apontamentoViewModel);
    }

调用时 var apontamento = _apontamentoAppService.Add(apontamentoViewModel);,值为 null

我的观点:

   <div class="col-md-10">
        @Html.DropDownList("Codigos", String.Empty)
        @Html.DropDownList("SubCodigos", String.Empty)
        @Html.DropDownList("LocalDaOperacao", String.Empty)
        @Html.DropDownList("Barcos", String.Empty)
    </div>

标签: c#asp.netmodel-view-controllerviewbag

解决方案


推荐阅读