1

こんにちは、元気ですか?ASP NET MVC でフォームを検証しようとしています。

会社、個人などの一部のエンティティに再利用する部分ビュー「住所」があります。

私の問題は、フォームを送信すると、親ビューのコントロールのみが検証され、部分ビューのコントロールは検証されないことです。

ここにいくつかのコードがあります。あなたが私に手を差し伸べてくれることを願っています

パーソンビュー

@model Entities.Person


@using (Html.BeginForm("Create", "Person", FormMethod.Post))
{

    <table>
        <tr>
            <td>
                @Html.LabelFor(model => model.FirstName)
                <div class="control">
                    @Html.TextBoxFor(model => model.FirstName, new { @maxlength = 7, @class = "numeric"})
                    @Html.ValidationMessageFor(model => model.FirstName)
                </div>
                <div class="spacer-short"></div>
            </td>
            <td>
                @Html.LabelFor(model => model.LastName)
                <div class="control">
                    @Html.TextBoxFor(model => model.LastName, new { @maxlength = 7, @class = "numeric"})
                    @Html.ValidationMessageFor(model => model.LastName)
                </div>
                <div class="spacer-short"></div>
            </td>
        </tr>
    </table>
    @{ Html.RenderAction("Index", "Address", new {id = Model.AddressId});} //Renders the Address form part

    <div class="spacer"></div>
    <button type="submit" data-button="true" data-button-icon="ui-icon-disk" class="">Create</button>
    <button type="button" data-button="true" data-button-icon="ui-icon-circle-close" class="button-cancel">Cancel</button>
}

アドレスビュー

@model Entities.Address


<table>
     <tr>
         <td>
            @Html.LabelFor(model => model.Street)
            <div class="control">
                @Html.TextBox("Address.Street", Model.Street)
                @Html.ValidationMessage("Address.Street")
             </div>
           <div class="spacer-short"></div>
           </td>
           <td>
              @Html.LabelFor(model => model.Number)
              <div class="control">
                @Html.TextBox("Address.Number", Model.Number)
                @Html.ValidationMessage("Address.Number")
             </div>
           <div class="spacer-short"></div>
            </td>
        </tr>
    </table>

次に、人物フィールドと住所フィールドの検証メタデータ ([必須]) をいくつか用意します。

4

4 に答える 4

8

検証エラーが表示されることを期待して使用するよくある間違い@Html.Partial(...)は、ViewData をそのパーシャルに渡さないことです。

@Html.Partial([ViewName], [EmailAddressObject], ViewData)
于 2013-03-18T19:07:18.040 に答える
0

部分ビューをレンダリングするHtml.Partial(...)代わりに使用してみてください。Html.RenderAction(...)これにより、検証が抑制されている可能性があります。

于 2013-03-18T17:19:37.623 に答える
0

これを試して:

@Html.EditorFor(Model.Street)
@Html.ValidationMessageFor(Model.Street)

これの代わりに:

@Html.TextBox("Address.Street", Model.Street)
@Html.ValidationMessage("Address.Street")
于 2013-03-18T19:14:24.783 に答える