Mój model jest taki
public class MyModel
{
string ID {get;set;}
string Title {get;set;}
MyOtherModel Meta {get;set;}
}
Jak zdefiniować niestandardowy segregator dla typu (MyOtherModel), więc gdy domyślny segregator wiąże MyModel, wywołuje niestandardowy segregator dla właściwości "Meta". Zarejestrowałem go w App startu jak:
ModelBinders.Binders[typeof(MyOtherModel)] = new MyCustomBinder();
ale to nie działa, jakikolwiek pomysł lub jakiś dobry artykuł z większą ilością informacji dotyczących modelowania spoiw?
Odpowiedzi:
1 dla odpowiedzi № 1Jest artykuł o kolekcjach, który dotyka trochę skomplikowanych typów mapowania typu:
Kolekcje i trochę o typach złożonych
Z drugiej strony ten artykuł może dać ci kilka przydatnych wskazówek:
http://odetocode.com/Blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx
Proponuję ci jako obejście aby użyć spinacza modelu dla klasy MyModel, nie jest to idealne rozwiązanie, ale możesz refaktor to łatwo, gdy odkryjesz lepsze rozwiązanie. :)
0 dla odpowiedzi nr 2
Właściwie, jeśli umieścisz Edycja / Utwórz widok z modelem twojej klasy MyModel, coś takiego:
<%= Html.TextBox("Meta.Prop1") %>
gdzie Prop1 jest własnością twojej klasy MyOtherModel, następnie
UpdateModel(model);
wypełni wartość pola tekstowego do niestandardowej właściwości podmodelu. I z powrotem, wartość pola tekstowego będzie również wypełniona tą wartością podmodelu.
Tak więc, po aktualizacji aktualnego modelu, aktualizujesz także podmodele.