这是适用于MVC 1& S的一般模型绑定问题。 2.我想知道MVC2是否会更好,但这是我的问题:
我有一个相当复杂的模型:
public interface IEvent
public int Id
public string Title
public List<EventContact> Contacts
public List<EventDatesLocations> DatesLocations
public class EventDatesLocations
public int Id
public DateTime StartDate
public DateTime EndDate
public List<EventLocation> Locations
我的IEvent类有一个自定义模型绑定器,它基本上完成了IEvent的所有绑定。我调用默认模型绑定器来绑定Contacts
列表,这很有效。
我准备开始尝试绑定DatesLocations
内容,但我想确保我正确地做事。
总的来说,我不确定我是否了解了模型绑定的所有细节。为IEvent
中的列表设置多个模型绑定器或者只有一个IEvent
模型绑定器(正如我现在所做的那样)会更好,它会调用所需列表的默认绑定器。
专家如何做到这一点? :P
答案 0 :(得分:0)
查看this question以查看一些嵌套的模型绑定。
回到这个问题,你提到你需要对IEvent的不同实现做一些绑定,但是你想根据实现IEvent的类型绑定特定的属性。我会说这通常很糟糕。为什么?因为您正在尝试让一个模型绑定器知道一个接口知道它的具体实现。
如果您需要多个类来实现IEvent(由于某种原因),那么您可能需要为每个类定制绑定器(如果沿着这条路线走,虽然它们将是具体类型,然后默认绑定器应该工作),或者您需要扩展IEvent接口以包含您将在其上设置的属性。
记住接口是用来定义需要实现的契约...你不能使用实现它的对象,然后根据它们的类型检查其他属性: - )