Эта логика должна быть либо внутри библиотеки / функции, которую вы используете для рендеринга HTML-таблицы внутри представления, например:
foreach (var propertyInfo in SubscriptionType.GetProperties())
{
if (propertyInfo.HasAttribute<HiddenInputAttribute>()) continue;
//...
}
Есть также некоторые утилиты автоматического сопоставления вы можете использовать для удаления ненужные свойства из модели представления.
public class ViewModel
{
public string Public { get; set; }
[HiddenInput]
public string Private { get; set; }
}
Вы можете создать новую модель представления без свойств, содержащих атрибут [HiddenInput]
, с помощью:
viewModel = new ViewModel().PopulateFromPropertiesWithoutAttribute(
viewModel, typeof(HiddenInputAttribute));
Или вы можете использовать ToObjectDictionary для управления свойствами модели в неструктурированном словаре, например:
var map = viewModel.ToObjectDictionary();
viewModel.GetType().GetProperties()
.Where(x => x.HasAttribute<HiddenInputAttribute>())
.Each(x => map.Remove(x.Name)); //remove all props with [HiddenInput]
viewModel = map.FromObjectDictionary<ViewModel>(); //new viewModel without removed props