1

私はこのようなビューモデルを持っています-

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

ビューモデルにはRegisterModelRegisterModelモデルオブジェクトと呼ばれるプロパティが含まれています。これは次のようになります-

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オブジェクトのサーバー側の検証は取得されます。

目立たないクライアント側の検証が機能するようにすべてが正しく構成されていると思います。これは、Webサイトの他の領域でも機能します。ビューモデルの子オブジェクトに対してクライアント側の検証を機能させるために、何か特別なことをする必要がありますか?

これが私のビューコードです-

@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>
}
4

1 に答える 1

0

次の appsettings が web.config ファイルにあることを確認する必要があります。また、ページで jquery.validate.unobtrusive.min.js を参照しています。(作成時に MVC プロジェクトの Scripts フォルダーにある必要があります)

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
于 2012-10-26T14:07:11.667 に答える