使用远程验证在表单外单独显示ValidationMessageFor

时间:2014-08-17 14:35:20

标签: c# asp.net-mvc remote-validation

我遇到了问题,希望你能帮我解决。

我有一个包含多个字段的表单,其中很少有远程验证。

@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输入失去焦点时,远程验证就完成了,如果字段无效,则消息会按预期显示在下表中。

我的问题是,我需要更改它并将验证消息放在表单本身之外,完全不同的部分。而这正是我努力寻找合适的解决方案的地方,就像失去formcontext一样,

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

1 个答案:

答案 0 :(得分:0)

就在我的脑海中,我想我会隐藏for Html.ValidationMessageFor,然后使用jQuery / JavaScript将内容复制到您需要的位置。诀窍是确保每次验证时都会更新jQuery,这可能需要在每次更改文本框时进行同步。