簡體   English   中英

MVC 3-視圖模型的子對象上的客戶端驗證

[英]MVC 3 - Client Side Validation on a child object of a view model

我有一個看起來像這樣的視圖模型-

public class upgradeViewModel
{
    public Cart Cart { get; set; }
    public RegisterModel RegisterModel { get; set; }
} 

視圖模型包含一個名為RegisterModel的屬性, RegisterModel模型對象與此類似-

public class RegisterModel
{
    [Required]
    [Display(Name = "Your name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Your email address")]
    public string Email { get; set; }

    ...
}

我在視圖模型上使用RegisterModel屬性在使用upgradeViewModel對象作為模型的視圖中設置表單。 提交表單時,盡管我確實獲得了RegisterModel對象的服務器端驗證,但我沒有任何客戶端驗證。

我相信我已經正確配置了所有內容,以使客戶端驗證不受影響,並且可以在網站的其他區域使用。 我需要做一些額外的事情來使客戶端驗證適用於視圖模型的子對象嗎?

這是我的查看代碼-

@model upgradeViewModel

@{
    ViewBag.Title = "Title";
    Layout = "~/Views/Shared/_LayoutNormal.cshtml";
}

<h2>Title</h2>

Some text ....

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true, "Account creation was unsuccessful. Please correct the errors and try again.")
    <div>
        <fieldset>
            <legend>Your Information</legend>

            <div class="editor-label">
                @Html.LabelFor(m => m.RegisterModel.UserName)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.RegisterModel.UserName)
                @Html.ValidationMessageFor(m => m.RegisterModel.UserName)
            </div>

            <div class="editor-label">
                @Html.LabelFor(m => m.RegisterModel.Email)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.RegisterModel.Email)
                @Html.ValidationMessageFor(m => m.RegisterModel.Email)
            </div>

            <div class="editor-label">
                @Html.LabelFor(m => m.RegisterModel.Password)
            </div>
            <div class="editor-field">
                @Html.PasswordFor(m => m.RegisterModel.Password)
                @Html.ValidationMessageFor(m => m.RegisterModel.Password)
            </div>

            <div class="editor-label">
                @Html.LabelFor(m => m.RegisterModel.ConfirmPassword)
            </div>
            <div class="editor-field">
                @Html.PasswordFor(m => m.RegisterModel.ConfirmPassword)
                @Html.ValidationMessageFor(m => m.RegisterModel.ConfirmPassword)
            </div>

            <p>
                <input type="submit" value="Save Details" class="inputbutton" />
            </p>
        </fieldset>
    </div>
}

您應確保web.config文件中包含以下appsettings。 並且您在頁面上引用了jquery.validate.unobtrusive.min.js。 (創建時應位於MVC項目的Scripts文件夾中)

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM