0
此代碼驗證正確:從所述第二組塊的代碼是嵌套字段的表單驗證
@Html.LabelFor(model => model.User.FirstName, new { @class = "control-label col-md-3 required" })
<div class="col-md-8">
@Html.EditorFor(model => model.User.FirstName, new { @class = "form-control required" })
@Html.ValidationMessageFor(m => m.User.FirstName)
</div>
model.User:
@Html.LabelFor(m => m.FirstName, new { @class = "control-label col-md-2 required" })
<div class="col-md-4">
@Html.EditorFor(m => m.FirstName, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.FirstName)
</div>
此代碼未正確驗證與第一塊代碼中的「m」相同類型的對象。
下面是模型中顯示自定義驗證程序屬性的塊。
[DisplayName("First Name")]
[Required()]
[FirstLastName]
public string FirstName{ get; set; }
以下是FirstLastName屬性,它適用於第一部分代碼,但不適用於第二部分。代碼的第一個塊的
public class FirstLastNameAttribute : RegularExpressionAttribute
{
public FirstLastNameAttribute() :
base(@"^[A-Za-z0-9\.\-_\!\#\^\~ ]{1,31}(?<!\.)$")
{
ErrorMessageResourceName = "FirstLastNameErrorMessage";
ErrorMessageResourceType = typeof(Messages);
}
}
HTML輸出,它工作的代碼第二塊的正確
<input class="input-validation-error text-box single-line form-control" data-val="true" data-val-regex="Allowed characters: a-Z, 0-9, .-_!#^~, and space. Cannot end with a period. Must be 1-32 characters." data-val-regex-pattern="^[A-Za-z0-9\.\-_\!\#\^\~ ]{1,31}(?<!\.)$" data-val-required="The First Name field is required." id="FirstName" name="FirstName" type="text" value="asdf." aria-required="true">
HTML輸出不正常工作
<input type="text" value="" name="User.FirstName" id="User_FirstName" data-val-required="The First Name field is required." data-val-regex-pattern="^[A-Za-z0-9\.\-_\!\#\^\~ ]{1,31}(?<!\.)$" data-val-regex="Allowed characters: a-Z, 0-9, .-_!#^~, and space. Cannot end with a period. Must be 1-32 characters." data-val="true" class="text-box single-line form-control" style="background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHklEQVQ4EaVTO26DQBD1ohQWaS2lg9JybZ+AK7hNwx2oIoVf4UPQ0Lj1FdKktevIpel8AKNUkDcWMxpgSaIEaTVv3sx7uztiTdu2s/98DywOw3Dued4Who/M2aIx5lZV1aEsy0+qiwHELyi+Ytl0PQ69SxAxkWIA4RMRTdNsKE59juMcuZd6xIAFeZ6fGCdJ8kY4y7KAuTRNGd7jyEBXsdOPE3a0QGPsniOnnYMO67LgSQN9T41F2QGrQRRFCwyzoIF2qyBuKKbcOgPXdVeY9rMWgNsjf9ccYesJhk3f5dYT1HX9gR0LLQR30TnjkUEcx2uIuS4RnI+aj6sJR0AM8AaumPaM/rRehyWhXqbFAA9kh3/8/NvHxAYGAsZ/il8IalkCLBfNVAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-attachment: scroll; background-position: right center; cursor: auto;" aria-required="true">
是不是有什麼毛病嵌套對象驗證?有一個簡單的解決方法嗎?
你所顯示的內容沒有什麼不妥 - '[Required]'屬性可以正常工作。但是你沒有指出'[FirstLastName]'是什麼或者做了什麼。 –
@StephenMuecke我已經添加了FirstLastNameAttribute的代碼。它適用於第一位代碼,但不適用於第二位。對於這兩組代碼,必需屬性都可以正常工作。 – CamHart
對我來說工作得很好。顯示兩種情況下的html輸出。 –