MVC 万无一失不适用于 DisplayTextFor

MVC Foolproof not working for DisplayTextFor

我有条件要求:

 [Display(Name = "Contract Number:")]
    [RequiredIf("CandidateType", "Contractor")]
    public string ContractNumber { get; set; }

并且在视图中:

 @Html.DisplayTextFor(x => x.CandidateType)

 <td>
                    @Html.DisplayNameFor(x=>x.ContractNumber)<br />
                    @Html.ValidationMessageFor(x=>x.ContractNumber)
                </td>
                <td>
                    @Html.TextBoxForWithTitle(x=>x.ContractNumber, new { @id = "txtContractNumber", @class = "textNormal"})
                </td>

但是验证失败,因为帮助者的显示没有字段名称。你如何解决这个问题?如果我使用 TextBoxFor 并将其设置为只读,它会起作用,但它看起来很傻。

您可以为值添加隐藏输入

@Html.HiddenFor(x => x.CandidateType)

或设置由 TextBoxFor() 创建的元素的样式以删除边框、填充等,如果您想看起来像 DisplayTextFor()

创建的元素