Игнорировать некоторые поля с помощью помощника @Html.EditorForModel()

Я использую вспомогательный @Html.EditorForModel() во всех моих представлениях.

Есть желание, чтобы он пропустил два поля в моей модели, но только на этом представлении, другой он должен продолжать отображать эти поля, как обычно.

Как пропустить эти два поля только в этом представлении?

Ответ 1

Используйте атрибут [ScaffoldColumn(false)].

например.

public class Person {
    [ScaffoldColumn(false)]
    public int PersonID { get; set; }
    ...

Решение и пример получены из: Pro ASP.NET MVC 3 Framework, третье издание

Ответ 2

Я бы рекомендовал писать режимы просмотра для любого представления, которое вы хотите отклонить от поведения по умолчанию.

Боковое примечание. Вероятно, неплохо было бы написать viewmodel для каждого представления, поскольку вы получаете разделение проблем, и легче контролировать поведение каждого представления.

В любом случае...

Например, скажите, что ваша модель

class Herps {
    public string Name { get; set; }
    public int SecretToSomePeople { get; set; }
}

и вы не хотите, чтобы SecretToSomePeople отображался в одном из ваших представлений, создайте модель, не содержащую SecretToSomePeople

class Herps {
    public string Name { get; set; }
}

и использовать это как модель для желаемого вида. Убедитесь, что вы копируете в/из фактической модели где-то, но.

Ответ 3

Строго говоря, если вы не хотите отображать поля, то они не должны находиться на Модели - точка Модели должна содержать точно данные, необходимые для представления.