2012-02-06 11 views
0

は、私はそれが正常に動作ビューのテキストボックスを取得するにはどうすればよいですか?私のコントローラで

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/updating-related-data-with-the-entity-framework-in-an-asp-net-mvc-application

n個の関係にn個を作るために、この例に従うが、データベースへのペイロードを持つn個の関係からnのために私が把握し、私が行うことができます[HTTPGET]私が見たいと思っているものを表示するが、今私は私の見解にあるテキストボックスをどうやって得ることができるのか知りたければ、私のコントローラでチェックボックスを得ることができる(以下のアクションを参照)。どのようにテキストボックスを取得することができますか?私のコントローラのすべてのチェックボックス?

@using (Html.BeginForm("AgregarEmpresas", "Empleado")) 
{ 

    <fieldset> 
<div class="editor-field"> 
    <table> 
     <tr> 
      @{ 
       int cnt = 0; 
       List<ITCOrganigrama.ViewModel.AsignarEmpresa> empresas = ViewBag.Empresas; 

       foreach (var empresa in empresas) 
       { 
        if (cnt++ % 5 == 0) { 
         @: </tr> <tr> 
        } 
        @: <td> 
         <input type="checkbox" 
           name="selectedEmpresa" 
           value="@empresa.EmpresaId" 
           @(Html.Raw(empresa.Assigned ? "checked=\"checked\"" : "")) /> 
          @empresa.Nombre 
         <div> 
          @Html.LabelFor(model => empresa.cargo) 
          @Html.TextBoxFor(model => empresa.cargo, new { style = "width: 150px;" }) 
          @Html.ValidationMessageFor(model => empresa.cargo) 
         </div> 
        @:</td> 
       } 
       @: </tr> 
      } 
    </table> 
</div> 
<p> 
      <input type="submit" value="Agregar" /> 
     </p> 
</fieldset> 
} 

私はchekbox

[HttpPost] 
     public ActionResult AgregarEmpresas(int? id, FormCollection formCollection, string[] selectedEmpresa) 
     { 
} 

私の最後のビューを取得アクション:編集 http://s3.subirimagenes.com:81/otros/previo/thump_7406511add1.jpg http://www.subirimagenes.com/otros-add1-7406511.html

を:

ViewModelクラス

public class AsignarEmpresa 
    { 
     public int EmpresaId { get; set; } 
     public string Nombre { get; set; } 
     public string cargo { get; set; } 
     public bool Assigned { get; set; } 
    } 

答えて

0

投稿アクションとそのパラメータを見てください。それらの名前は本当に重要です。

あなたのチェックボックス

<input type="checkbox" 
          name="selectedEmpresa" 
          value="@empresa.EmpresaId" 

は、その「selectedEmpresa」それはコントローラのアクション定義と同じ名前の入力の名前で細かいbeacuseを見て作業しています。モデルバインダーは、投稿されたデータの中でこの名前を検索し、見つかった場合は、その名前からオブジェクトを作成します。あなたの場合、彼は文字列[]オブジェクトにデータを解析しようとします。

そう...あなたのような何かにアクション定義を変更する必要があり、すべての最初の。

[HttpPost] 
     public ActionResult AgregarEmpresas(int? id, FormCollection formCollection, string[] selectedEmpresa,string [] empresaTextBox) 
     { 
} 

生成されたhtmlを変更する必要があります。あなたはアクション内の一部のデータを取得する必要があり、これらの変更により

@Html.TextBoxFor(model => empresa.cargo, new { style = "width: 150px;", name="empresaTextBox" }) 

。あなたは、インデックス番号が含まれている入力の特別な名前を準備する必要があり、これらの複数の要素があることをモデルバインダーを伝えるために、複数ののチェックボックステキストボックスを持ってbeacuseしかし、あなたは奇妙な何かを得るでしょう。この場合

この例を見て

<input name="childs[0]"></input> 
<input name="childs[1]"></input> 

モデルバインダーそれらの2が含まれているオブジェクトの配列を作成します。

最後に、あなたのコードはこのように見えるはずです。

@using (Html.BeginForm("AgregarEmpresas", "Empleado")) 
{ 

    <fieldset> 
<div class="editor-field"> 
    <table> 
     <tr> 
      @{ 
       int cnt = 0; 
       int i=0; 
       List<ITCOrganigrama.ViewModel.AsignarEmpresa> empresas = ViewBag.Empresas; 

       foreach (var empresa in empresas) 
       { 
        if (cnt++ % 5 == 0) { 
         @: </tr> <tr> 
        } 
        @: <td> 
         <input type="checkbox" 
           name="selectedEmpresa[@i]" 
           value="@empresa.EmpresaId" 
           @(Html.Raw(empresa.Assigned ? "checked=\"checked\"" : "")) /> 
          @empresa.Nombre 
         <div> 
          @Html.LabelFor(model => empresa.cargo) 
          @Html.TextBoxFor(model => empresa.cargo, new { style = "width: 150px;" ,name=String.Format("empresaTextBox\[{0}\]",i) }) 
          @Html.ValidationMessageFor(model => empresa.cargo) 
         </div> 
        @:</td> 
       i++; 
       } 
       @: </tr> 

      } 
    </table> 
</div> 
<p> 
      <input type="submit" value="Agregar" /> 
     </p> 
</fieldset> 
} 

これが機能する場合は、それから私はブールと1つのの文字列の値を持つクラスを作成しようとします。この変更では、文字列を持つ2つの配列ではなく、クラスの配列を操作します。

+0

私はempresaTextBoxのnullを取得します。 私は私のビューモデルでブール値と文字列を持つクラスを持っています –

関連する問題