【问题标题】:ASP.NET MVC3: ValidationMessageFor on new lineASP.NET MVC3:新行上的 ValidationMessageFor
【发布时间】:2013-02-14 00:21:26
【问题描述】:

我的模型有一条验证消息:

    <td colspan="2">
        <div class="rereg-input">
           @Html.TranslatedTextBoxFor(m => m.Email)
           @Html.ValidationMessageFor(m => m.Email)
         </div>
     </td>

当用户忘记时,文本会在字段旁边很好地显示一个 *:

但是当他们输入一封错误的电子邮件时,邮件就会被放在最后。我怎样才能把它弄下来?

【问题讨论】:

    标签: c# css asp.net-mvc asp.net-mvc-3 validation


    【解决方案1】:

    您需要重新排列/修复 CSS/HTML 结构。

    <td colspan="2">
        <div class="rereg-input">
            @Html.TranslatedTextBoxFor(m => m.Email)
            <div>
                @Html.ValidationMessageFor(m => m.Email)
            </div>
        </div>
    </td>
    

    您最好修改 MVC 放在验证消息元素上的任何 CSS 类并设置 display:block;

    .validation-message {
        /* ... */
        display:block;
    }
    

    【讨论】:

    • 嗯。就像 Div 唯一的技巧一样,它在 FireFox 和 Chrome 中效果很好,但在 IE9 中效果不佳。
    • 如果一个普通的div 没有把它放在一个新的行上,那就很奇怪了。也许.rereg-input div 的CSS 有float 规则?尝试&lt;div style="float:none;display:block;"&gt; 进行检查。
    • 在大多数浏览器中,您可以通过右键单击元素来检查元素并查看其样式。
    • BINGO,浮动是 IE 中的问题
    • 太棒了 :) 找到 CSS 并摆脱浮动,它应该可以工作。
    【解决方案2】:

    只需用 div 包围它就可以了

    <div>@Html.ValidationMessageFor(m => m.Email)</div> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2011-12-07
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多