0

私は、「ViewModel」仲介者を介してモデルに添付されているいくつかの非常に長いビューに非常に懸命に取り組んできました。私のモデルは別のプロジェクトにあります。

すべて正常に動作しますが、ビュー内の一部のフィールドを非表示にしたいです。私はほとんどの場合、次のようなものを使用しました:

        <td id="Left">@Html.LabelFor(x=>x.Id)</td>
        <td id="Right">@Html.TextBoxFor(model => model.Id)</td>

これまでのすべてのフィールド (各ビューには数百あります。

私は多くの場所でそれをしなければならないので、これらに入ってそれらの多くを HiddenFor に変更しなければならないのは意味がありません。

次のように、ビューモデルのプロパティの上に配置するオプションがあるかどうかを知りたいです。

    [Display(Name = "ID:")]
    [HiddenInput(DisplayValue = false)]
    public int Id { get; set; }

ラベルと入力テキストボックスの両方を一度に非表示にするため、マークしたフィールドのみが表示されます。これを行うために属性を設定するだけでよいと考えているので、どこが間違っているのでしょうか。

助けてくれてありがとう。

4

1 に答える 1

0

いいえ、あなたの場合、そのためのすぐに使えるソリューションはありません。

入力とラベルの生成を一緒に制御するScaffoldColumnAttributeがありますが、動的に生成されたビューを使用する場合にのみ動作を確認できますEditorForModel。そして、この手法は html を完全に削除しますが、これは非表示の入力を生成することと同じではありません。

jQuery を使用してそれを管理しようとすることもできますが、属性はセレクターで終わります

<script>
$(function () {
    $('input[name$="Id"]').closest('tr').hide();
});
</script>
于 2012-05-21T12:01:38.627 に答える