0

問題が発生しました。問題の解決にご協力いただければ幸いです。

いくつかのフィールドを含むフォームがあり、そのうちのいくつかはリモートで検証されています。

@using (Html.BeginForm("Action", "Controller", new { id = "myForm" }))
{
    @Html.AntiForgeryToken()    
        <table>
            <tr>
                <td width="225">Work permit/Registration card:</td>
                <td>Start date: @Html.EditorFor(m => m.WorkPermitStart)</td>
                <td width="50"></td> 
                <td>End date: @Html.EditorFor(m => m.WorkPermitEnd)</td> 
                <td>@Html.ValidationMessageFor(m => m.WorkPermitEnd)</td>
            </tr>
</table>
<li><button type="submit" value="submit" class="form-yes">submit</button></li>
}

このようなコードは問題なく動作し、WorkPermitEnd 入力がフォーカスを失ったときにリモート検証が行われ、フィールドが無効な場合、期待どおりに次のテーブル セルにメッセージが表示されます。

私の問題は、それを変更して、検証メッセージをフォーム自体の外、まったく別のセクションに配置する必要があることです。そして、これは私が適切な解決策を見つけるのに苦労しているところです.フォームコンテキストを失うとき、

@Html.ValidationMessageFor(m => m.WorkPermitEnd)

機能せず、元の形式の入力の検証メッセージが表示されません。私の質問は、検証メッセージをページの別のセクションに渡す方法はありますか?

編集:ページのレイアウトを追加

<section id="content">
    @RenderBody()
</section>

<aside id="messages">
    <aside id="validation">
        @RenderSection("ValidateMessage", required: false)
    </aside>
    <aside id="help">
        @RenderSection("Help", required: false)
    </aside>
</aside>
4

1 に答える 1

0

頭のてっぺんから、 for を非表示にしてHtml.ValidationMessageForから、jQuery/JavaScript を使用して必要な場所にその内容をコピーすると思います。秘訣は、検証が発生するたびに jQuery が更新されるようにすることです。これには、テキスト ボックスが変更されるたびに同期が必要になる場合があります。

于 2014-08-17T14:56:07.737 に答える