如何使用@ Html.DisplayFor代替@ Html.TextBoxFor

时间:2018-07-04 01:51:27

标签: asp.net-mvc razor

我想在应用程序中使用@Html.DisplayFor而不是@Html.TextBoxFor

如果我使用@Html.TextBoxFor,则可以将值传递给控制器​​,但是如果我使用@Html.DisplayFor,则它每次都传递null。

请建议我如何使用在文本框中传递的相同数据,然后再传递给DisplayFor。

    @for (int counter = 0; counter <= Model.Employees.Count - 1; counter++)
        {
         <tr>
           <td>
          @Html.TextBoxFor(m => m.Employees[counter].Name, null, new { @class = "form-control" }) do not want to use

          @Html.DisplayFor(m => m.Employees[counter].Name, null, new { @class = "form-control" })   ///want to use
                </td>
    }

1 个答案:

答案 0 :(得分:0)

如果您希望值包含在表单提交中,则必须将其绑定到表单输入。对于任何表单提交都是如此,而不仅仅是ASP.NET MVC。

要包含不可编辑的值,请使用

@Html.HiddenFor(m => m.YourPropertyHere)

为该属性生成一个<input type="hidden" />元素。

因此,您的示例如下所示:

@for (int counter = 0; counter <= Model.Employees.Count - 1; counter++)
{
    <tr>
        <td>
            @Html.DisplayFor(m => m.Employees[counter].Name, null, new { @class = "form-control" })
            @Html.HiddenFor(m => m.Employees[counter].Name)
        </td>
    </tr>
}