ValidationMessageFor在表单外显示

时间:2013-08-22 11:41:15

标签: asp.net-mvc razor

我在开始表单之外的MVC视图中有一个字段的验证消息。但是它没有显示出来。

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

我有可能实现这个目标吗?因为我不想使用Jquery或Javascript函数来验证这一点。

3 个答案:

答案 0 :(得分:2)

  1. 使用Div标记将验证邮件保留在表单中。
  2. 使Div显示无。
  3. 单击按钮,检查表单
  4. 的IsValid属性
  5. 如果有效,则复制Div的HTML()并将其放入另一个div中,该div将位于表单之外。
  6. 它不是一个干净的解决方案,但技巧将起作用

答案 1 :(得分:1)

ValidationMessageFor仅在字段/控件位于该控制器的表单后置操作内时才有效。否则需要执行JavaScript / Ajax / ViewBag之类的单独方法来获取错误。

答案 2 :(得分:0)

仅当@Html.ValidationMessageFor(m => m.Property)在表单内时才有效。但是,我设法找到一个解决方法,当有元素更改时,也会更新外部div,即错误消息更改而不重新提交表单:

  1. 在表单外放置<div id="outside-form"></div>
  2. 在表单中放置<div id="inside-form" style="display:none;"></div>,其中包含所有@Html.ValidationMessageFor(m => m.Property)语句。
  3. 这是令人讨厌的部分,在你的jquery.validate.js中,找到以下内容:
  4. form: function() {.....}并且在函数返回之前添加$("#outside-form").html($("#inside-form").html());。这可以确保每次验证整个表单时都会更新您的outside-div。

    element: function( element ) {.....}并且在函数返回之前添加$("#outside-form").html($("#inside-form").html());。这可以确保每次验证每个表单元素时都会更新outside-div。

    那就是它!我想知道是否有某种方法可以扩展formelement对象而不更改.js文件本身。你对此有任何线索吗?