繁体   English   中英

ASP.NET MVC必需字段指示符

[英]ASP.NET MVC Required Field Indicator

对于我的ASP.NET MVC视图中已根据需要进行归因的字段,框架是否有任何方法可以自动呈现某种指示符,表明字段在元数据中被标记为必需?

应该可以用CSS做到这一点,因为MVC3将这些自定义属性添加到元素:

 <input data-val="true" data-val-required="The Username field is required." id="Username" name="Username" type="text" value="" />

您可以像这样关闭CSS中所需的数据值:

输入[data-val-required] {background:red}或设置星号的背景图像等。

我这样做是因为我的必填字段必须是动态的(在配置文件中定义)

在视图的末尾添加:

    <script type="text/javascript">
        $('input[type=text]').each(function () {
            var req = $(this).attr('data-val-required');
            if (undefined != req) {
                var label = $('label[for="' + $(this).attr('id') + '"]');
                var text = label.text();
                if (text.length > 0) {
                    label.append('<span style="color:red"> *</span>');
                }
            }
        });
    </script>

这是一个将红色星号附加到任何具有属性'data-val-required'的右侧的星号。

<script type="text/javascript">
    $('[data-val-required]').after('<span style="color:red; font-size: 20px; vertical-align: middle;"> *</span>');
</script>

我修改了Renato Saito的答案,包括更多字段类型(所有类型的输入和选择列表),并使用jQuery命名空间而不是泛型$。 这是我的修订版:

<script type="text/javascript">
// add indicator to required fields
jQuery('input,select').each(function () {
    var req = jQuery(this).attr('data-val-required');
    if (undefined != req) {
        var label = jQuery('label[for="' + jQuery(this).attr('id') + '"]');
        var text = label.text();
        if (text.length > 0) {
            label.append('<span style="color:red"> *</span>');
        }
    }
});
</script>

添加html属性是不够的。 这只会导致javascript验证错误。 如果你想表明该字段是必需的,你可能想要为它添加一个星号。 你可以通过HtmlHelper的extenssion方法来实现。 你可以在这里找到详尽的解释

指示MVC应用程序中的必填字段

从我这边做了一个小修改。 实际上我有主键(DB中的Identity Columns)。 我不想强调。 因此,我在代码片段下方使用,仅选择在注释中具有必需属性的input[type=text]字段。

$("[data-val-required]").not(":hidden").not(":radio").not(":checkbox").after('<span style="color:red;max-width:10px;min-height:30px;">*</span>');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM