0

对于开始表单之外的 MVC 视图中的字段,我有此验证消息。但是,它没有显示。

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

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

4

3 回答 3

2
  1. 使用 Div 标记将验证消息保存在表单中。
  2. 使 Div 显示无。
  3. 单击按钮时,检查表单的 IsValid 属性
  4. 如果有效,则复制 div 的 HTML() 并将其放入表单之外的另一个 div 中。

它不是一个干净的解决方案,但这个技巧会奏效

于 2013-12-31T06:37:57.317 回答
1

ValidationMessageFor仅当字段/控件位于该控制器的表单发布操作内时才有效。否则需要做单独JavaScript / Ajax / ViewBag的方法来获取错误。

于 2013-12-31T06:30:27.783 回答
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 中,找到以下内容:

form: function() {.....}就在函数 return add 之前$("#outside-form").html($("#inside-form").html());。这样可以确保每次验证整个表单时都会更新您的 outside-div。

element: function( element ) {.....}就在函数 return add 之前$("#outside-form").html($("#inside-form").html());。这样可以确保每次验证每个表单元素时都会更新您的 outside-div。

而已!我想知道是否有某种方法可以在不更改 .js 文件本身的情况下扩展formandelement对象。您对此有任何线索吗?

于 2014-10-10T16:33:00.837 回答