C#MVC表单不适用于输入表单属性

时间:2018-03-26 07:35:00

标签: asp.net-mvc forms validation razor attributes

我需要在表格单元格中使用表单与另一个单元格中的字段。我正在使用输入library。 MVC将数据传递给控制器​​正常工作,但在表单发送之前的验证不适用于此属性。

<tr>
<td>
    @Html.EditorFor(model => item.Code, new { htmlAttributes = new { @class = "form-control inline-edit", form = "editForm" + item.Id } })
    @Html.ValidationMessageFor(model => item.Code)
</td>
<td>
    @Html.EditorFor(model => item.Name, new { htmlAttributes = new { @class = "form-control inline-edit", form = "editForm" + item.Id } })
    @Html.ValidationMessageFor(model => item.Name)
</td>
<td class="text-right">
    @using (Html.BeginForm("UpdatePrintMaterial", "Production", FormMethod.Post, new { id = "editForm" + item.Id }))
    {
        @Html.AntiForgeryToken()
        @Html.HiddenFor(model => item.Id)
        <button class="btn btn-default save" data-toggle="tooltip" title="Zapisz"><i class="fa fa-save"></i></button>
    }
</td></tr>

如何在发送数据之前解决此问题以使用验证?

1 个答案:

答案 0 :(得分:0)

修订:根据您的要求,

您可以拥有3个单独的表单标签,每个按钮一个。只需确保表单中包含要传递的数据的输入字段。例如,如果您的操作方法是使用名为EmployeeId的参数接受EmployeeId,则您应该在输入隐藏字段中具有相同的表单内部。

@model IEnumerable<Employee>
<table>
@foreach(var item in Model)
{
<tr>
   <td>@item.EmployeeName</td>
   <td>@item.EmployeeGender</td>
   <td>@item.EmployeeCity</td>
   <td>@item.EmployeeDateOfBirth</td>
   <td>
     @using(Html.BeginForm("Details","YourControllerName"))
     {
       <input type="hidden" name="EmployeeId" value="@item.EmployeeId" />
       <input type="submit" value="Details" />
     }
     @using(Html.BeginForm("Edit","YourControllerName"))
     {
       <input type="hidden" name="EmployeeId" value="@item.EmployeeId" />
       <input type="submit" value="Edit" />
     }
     @using(Html.BeginForm("Delete","YourControllerName"))
     {
       <input type="hidden" name="EmployeeId" value="@item.EmployeeId" />
       <input type="submit" value="Delete" />
     }
   </td>
   </tr>
   }

*另外请记住,嵌套表单是无效的HTML。所以请确保你没有那些。