如何在表单中动态创建表单

时间:2012-08-23 04:52:03

标签: asp.net-mvc-3 razor

我使用formbuilder创建了一个扩展程序。现在我在我的视野中使用过它。 我的观点如下:

@using (Html.BeginForm("addDataInd", "CustInformations", FormMethod.Post))
{
  <fieldset class="field">
    <legend>Addresses</legend>
      <table>
        <tr>                            
          @Html.EditorFor(model => model.addresses) 
        </tr>
      </table>           
  </fieldset> 
}

其中

@Html.EditorFor(model=>model.addresses)

调用我的EditorTemplate,它看起来像:

<td>
@Html.hSearch("txtSearch", "", "lblsrch", "Search Text: ", "Search", "Fetch", "LookUp", new { script = "Select Aid, FullAreaName from fGetAreaTB()" }, null)
</td>

当我运行程序时,页面看起来像

enter image description here

我用fire bug来了解错误。我发现的只是为第一个生成的代码 上图(即永久地址)它不会创建表单,但对于其他两个表单,它会创建一个表单。因此,当我单击第一个搜索按钮时,它不起作用,但是当我单击第二个和第三个按钮时,它运行良好。

我只想在运行程序时,所有按钮必须处于格式状态。

1 个答案:

答案 0 :(得分:2)

您无法嵌套HTML表单。因此,您必须使用多个表单并将它们放在模板中。像这样:

<fieldset class="field">
    <legend>Addresses</legend>
    <table>
        <tr>                            
            @Html.EditorFor(model => model.addresses) 
        </tr>
    </table>           
</fieldset> 

并在编辑器模板中:

@model Address
<td>
    @using (Html.BeginForm("addDataInd", "CustInformations", FormMethod.Post))
    {
        @Html.hSearch("txtSearch", "", "lblsrch", "Search Text: ", "Search", "Fetch", "LookUp", new { script = "Select Aid, FullAreaName from fGetAreaTB()" }, null)
    }
</td>