Частичные обновления модели MVC - PullRequest
1 голос
/ 02 сентября 2011

Я часто нахожусь в ситуации, когда я хочу только представить и отредактировать некоторые поля из моей модели.Допустим, у меня есть модель, которая отображает адрес, возможно, я просто хочу, чтобы форма обновляла поля города и почтового индекса (плохой пример, но, надеюсь, это объясняет сценарий).

Я знаю два метода:

1) Сохраните ненужные поля в скрытых элементах ввода в форме, или ... 2) Создайте специальную модель представления, которая просто определяет нужные мне поля.

Я предпочитаю вариант № 2,но у меня нет хорошего чистого способа объединения данных из модели представления обратно в «реальную» модель в действии контроллера.На данный момент я придерживаюсь этого подхода ...

1) Сохраните запись, которую я бы скрыл в скрытом поле на модели представления. 2) Когда страница отправляется обратно, контроллер извлекает исходную запись, и я вручнуюприсвойте каждое поле из модели представления реальной модели. 3) Сохраните реальную модель обратно в хранилище данных.

Это работает, но это довольно трудоемкая работа, и очень легко пропустить назначение / переназначение иМне было интересно, если кто-нибудь знал о другом подходе?

1 Ответ

1 голос
/ 02 сентября 2011

Используйте System.ComponentModel.DataAnnotations.MetadataType .

Что-то вроде:

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

public interface INameViewableProperties
{
   [Display(name = "Your Name")]
   string Name { get; set; }
}

public interface INameHiddenProperties
{
   //[scaffoldColumn(false)] this completely hides the fields
   [UIHint("Hidden")] // i think...
   string Name { get; set; }
}

[MetadataType(typeof(INameViewableProperties)]
public class NameViewAbleProperties : BaseClassOfProperties
{
}

[MetadataType(typeof(INameHiddenProperties)]
public class NameHiddenProperties : BaseClassOfProperties
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...