C# MVC 3隐藏字段

C# MVC 3隐藏字段,c#,asp.net-mvc-3,model-view-controller,view,viewmodel,C#,Asp.net Mvc 3,Model View Controller,View,Viewmodel,我一直在非常努力地研究几个非常长的视图,这些视图通过“ViewModel”中介连接到我的模型上。我的模型在一个单独的项目中 所有工作正常,但视图中的一些字段我要隐藏。我大部分时间都用过这样的东西: <td id="Left">@Html.LabelFor(x=>x.Id)</td> <td id="Right">@Html.TextBoxFor(model => model.Id)</td> 为了同时隐

我一直在非常努力地研究几个非常长的视图,这些视图通过“ViewModel”中介连接到我的模型上。我的模型在一个单独的项目中

所有工作正常,但视图中的一些字段我要隐藏。我大部分时间都用过这样的东西:

        <td id="Left">@Html.LabelFor(x=>x.Id)</td>
        <td id="Right">@Html.TextBoxFor(model => model.Id)</td>
为了同时隐藏标签和输入文本框,只有我标记的字段才会显示。我在想,我应该能够设置一个属性来做这件事,所以我哪里做错了


提前感谢您的帮助。

不,在您的情况下,没有现成的解决方案

有一种方法可以同时控制输入和标签的生成,但只有在使用动态生成的视图时,使用
EditorForModel
才能看到它的作用。这种技术完全删除html,这与生成隐藏输入不同

您可以尝试使用jQuery和


$(函数(){
$('input[name$=“Id”]”)。最近('tr')。hide();
});

这是最好的实践方法,但是,如果做其他任何事情,它都会变得难看:)您可以定义一个使用属性元数据的EditorTemplate。并相应地排放(可能不是最佳实践方式,但它干净整洁)看看这个:似乎我能得到的最接近我想要的东西是在视图上注释掉TR。谢谢你的回答。#问题是你必须为每个要隐藏的字段生成一行。在最坏的情况下,我愿意在viewmodel中定义字段的位置附近执行一个属性。不过还是要谢谢你的回答。实际上,每个字段都需要一个选择器,而且只有在字段名不属于某些常见逻辑的情况下才需要。例如,对于名称以Id结尾的所有属性,示例代码将不作更改地工作
    [Display(Name = "ID:")]
    [HiddenInput(DisplayValue = false)]
    public int Id { get; set; }
<script>
$(function () {
    $('input[name$="Id"]').closest('tr').hide();
});
</script>