2017-04-04 3 views
1

私はasp.netとmvcで新しく、int、別のオブジェクトからのintのリスト、および他のオブジェクトからのintの他のリストをフォームとともに送信しようとしています。mvcのhttppostに異なるオブジェクトを挿入できますか?

挿入のための私の見解intは

@using (Html.BeginForm("Guardar", "pedidoEmp")) 
{ 
    @Html.ValidationSummary(true, "Please fix the following errors.") 
    <center> 
     <div class="form-group"> 
      @Html.LabelFor(m => m.empleadoId) 
      @Html.DropDownListFor(m => m.empleadoId, new SelectList(Model.verEmp, "empleadoId", "Nombre"), "", new { @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.empleadoId) 
     </div> 
    </center> 

とリストでは

@for (var i = 0; i < Model.verMenu.Count; i++) 
    { 
     <tr> 

      <td> 
        @Html.HiddenFor(menuId => Model.verMenu[i].MenuId) 

       @Html.DisplayFor(sopa => Model.verMenu[i].Sopa) 
      </td> 

です。 。 。

<div class="form-group"> 

         @for (var o = 0; o < Model.opMenuVer.Count; o++) 
         { 
          if (Model.opMenuVer[o].MenuId == Model.verMenu[i].MenuId) 
          { 
           @Html.CheckBox("OpcionId", new { value = Model.opMenuVer[o].OpcionId }) 
           @Html.Label(Model.opMenuVer[o].Nombre) 
           @Html.ValidationMessageFor(m => Model.opMenuVer[o].OpcionId) 
          } 
         } 

        </div> 
</td> 
     </tr> 
    } 
      </tbody> 
     </table> 
     @Html.AntiForgeryToken() 
     <button type="submit" class="btn btn-primary">Guardar</button> 
    } 

私のコントローラで私はこの

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Guardar(int idEmp, List<int> menusId, List<int> opsId) 
     { 
      List<PedidoXEmpleados> pedido = new List<PedidoXEmpleados>(); 
      if (!ModelState.IsValid) 
      { 
       return View("agregarMenu"); 
      } 
      for (int i = 0; i < menusId.Count; i++) 
      { 
       pedido[i].estadoPedido = true; 
       pedido[i].EmpleadoId = idEmp; 
       pedido[i].MenuId = menusId[i]; 
       pedido[i].OpcionId = opsId[i]; 
       _conBd.PedidoXEmpleados.Add(pedido[i]); 
      } 

      _conBd.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

ような何かをしようとhttppostはどうもありがとうございました、私は他のパーツを検索しようとするとき、私、私は、働く何かを見つけることができませんでしたプロジェクトに試してみてください。 "パラメータ辞書には、nullable型のパラメータ 'idEmp'のnullエントリが含まれています。

+1

にこれらの変更を行う必要があります。 (しかし、あなたは 'empleadoId'という名前を持っています) –

+0

とてもスティーブンに感謝します。私はそれを変えて動作させます。 :) –

答えて

0

最初はあなたの特性の名前と一致し、コード

@Html.DropDownList("idEmp", new SelectList(Model.verEmp, "empleadoId", "Nombre"), "", new { @class = "form-control" }) 

@Html.CheckBox("opsId", new { value = Model.opMenuVer[o].OpcionId }) 

@Html.Hidden("menusId",Model.verMenu[i].MenuId) 
+0

ありがとう、私はチェックボックスの変更を行い、隠され、動作します。ザーカンクス。 –

0

intと2のリストのプロパティを持つviewModelを作成するのが最善の方法だと思います。次に、このviewModelをビューのモデルとして使用し、contollerのモデルに値を渡します。このクラスは、IdプロパティまたはDbSetを持つべきではありません。あなたのリクエストで `idEmp`の値を送信しないので、あなたのすべてのパラメータ名の

関連する問題