У меня есть следующее действие контроллера:
[HttpPost]
public ViewResult DoSomething(MyModel model)
{
// do something
return View();
}
Где MyModel
выглядит следующим образом:
public class MyModel
{
public string PropertyA {get; set;}
public IList<int> PropertyB {get; set;}
}
Так DefaultModelBinder должен связывать это без проблем. Единственное, что я хочу использовать специальное/настраиваемое связующее для привязки PropertyB
, и я также хочу повторно использовать это связующее. Поэтому я решил, что это решение будет включать атрибут ModelBinder перед PropertyB, который, конечно, не работает (атрибут ModelBinder не допускается для свойств). Я вижу два решения:
-
Чтобы использовать параметры действия для каждого отдельного свойства вместо всей модели (что я бы не хотел, поскольку модель обладает множеством свойств):
public ViewResult DoSomething(string propertyA, [ModelBinder(typeof(MyModelBinder))] propertyB)
-
Чтобы создать новый тип, скажем
MyCustomType: List<int>
и зарегистрируйте привязку модели для этого типа (это опция) -
Возможно создание связующего для MyModel, переопределить
BindProperty
, и если свойство"PropertyB"
связывает свойство с моим настраиваемым связующим. Возможно ли это?
Есть ли другое решение?