Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何获取视图的文本框?在我的控制器中_Asp.net Mvc_Textbox - Fatal编程技术网

Asp.net mvc 如何获取视图的文本框?在我的控制器中

Asp.net mvc 如何获取视图的文本框?在我的控制器中,asp.net-mvc,textbox,Asp.net Mvc,Textbox,我按照这个例子来建立n对n关系 它可以正常工作,但是对于与数据库有效负载的n对n关系,我可以进行[HttpGet]并显示我想要显示的视图,但现在我想知道如何获得视图中的文本框,我可以在控制器中获得复选框(见下面的操作)这是我的观点,所以我的问题是怎样才能得到文本框呢?在我的控制器中为每个复选框 @using (Html.BeginForm("AgregarEmpresas", "Empleado")) { <fieldset> <div class="editor-f

我按照这个例子来建立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>
}
我的最后意见是: 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; }
    }

查看您的后期操作及其参数。那些名字真的很重要

你的复选框

 <input type="checkbox" 
                           name="selectedEmpresa" 
                           value="@empresa.EmpresaId" 
然后您必须更改生成的html

@Html.TextBoxFor(model => empresa.cargo, new { style = "width: 150px;", name="empresaTextBox" })
通过这些更改,您应该可以在操作中获得一些数据。然而,你会得到一些奇怪的东西,因为你有多个复选框文本框,以便告诉model binder,其中有多个元素,你必须准备包含索引号的输入的特殊名称

看看这个例子

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

在这种情况下,模型绑定器将创建包含两个对象的对象数组

因此,最后您的代码必须如下所示

@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>
}
@使用(Html.BeginForm(“AgregarEmpresas”、“Empleado”))
{
@{
int-cnt=0;
int i=0;
List empresas=ViewBag.empresas;
foreach(在empresas中为var empresa)
{
如果(cnt++%5==0){
@:    
}
@:  
@名为empresa的酒店
@LabelFor(model=>empresa.cargo)
@Html.TextBoxFor(model=>empresa.cargo,新{style=“width:150px;”,name=String.Format(“empresaTextBox\[{0}\]”,i)})
@Html.ValidationMessageFor(model=>empresa.cargo)
@:
i++;
}
@: 
}

}

如果你能让它工作的话。然后我将尝试创建一个类,其中包含一个布尔值和一个字符串值。通过此更改,您可以对类数组而不是两个带字符串的数组进行操作。

a执行此操作时,我在viewmodel中的empresaTextBox中得到null,该类带有布尔值和字符串
<input name="childs[0]"></input>
<input name="childs[1]"></input>
@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>
}