Игнорируйте некоторые поля, используя helper @ Html.EditorForModel () - PullRequest
11 голосов
/ 28 июля 2011

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

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

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

Ответы [ 3 ]

30 голосов
/ 19 сентября 2011

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

Е.Г.

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

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

3 голосов
/ 28 июля 2011

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

Примечание: вероятно, будет хорошей идеей написать модель представления для каждого представления, поскольку вы получаете разделение интересов,и легче контролировать поведение каждого вида.

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

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

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

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

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

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

2 голосов
/ 28 июля 2011

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

...