有一个噩梦把这个弄清楚,我现在平坦地靠在砖墙上
使用MVC框架我基本上构建了一个简单的表单。 我保持视图尽可能简单,只使用editorForModel()
因此,在此表单模型中,我使用数据注释为属性添加更多自定义。 我想创建一个自定义数据注释,它将根据另一个属性的值隐藏它所放置的属性。
E.g
我有一个是或否的下拉。
还有名字的字段。 当下拉列表为no时,它会隐藏表单中的名称字段。
我可以用JS实现这个目标,但是将它作为模型的简单数据注释将会很好。
E.g [HideField(" dropdown"," no")]
提前致谢
答案 0 :(得分:0)
您希望在客户端处理此问题,而不是服务器端(使用属性)。
如果您已经在使用jQuery,那么这样的事情就可以了。这是jsFiddle。
frame.origin.y
您希望在客户端进行此操作的原因非常简单,任何其他方法都需要回复每次更改下拉列表以检查值..
** 编辑 ** 来自评论:
是否可以将此JavaScript注入页面......而不是在每个页面上复制基本相同的脚本
这可以重写,更通用一些,因此可以在不同的页面上重复使用。将它添加到yoursite.js(您应该已经拥有..),然后根据需要将其连接到每个页面上。更新了jsFiddle。
Site.JS
$(function () {
var dropdown = $('#dropdown').change(function (event) {
if ($(this).val() == "no") {
$('#fieldToHide').hide();
} else {
$('#fieldToHide').show();
}
});
});
然后在你想要使用它的每个页面中,将它连接起来:
function hideIf(selectField, hideField, hideValue) {
$(selectField).change(function (event) {
if ($(this).val() == hideValue) {
$(hideField).hide();
} else {
$(hideField).show();
}
});
}
这样你就可以在不同的选择字段上多次调用hideIf,而无需重写上面的脚本..