I have a website, which has 3 types of contact forms, each contact form is associated with a model.

1. Enquiry
2. Complaint
3. Join

They all inherit from a bass class (`AbstractContact`) which implements my `IContact` interface (EG, `Enquiry` extends `AbstractContact` and `AbstractContact` implements `IContact`). 

This means in my Make\_A\_Complaint view, my model is of type Models.Complaint, where as in the Join\_Us view, my model is of type Models.Join... 

It would be nice for them all to route through a single method in my Controller. Something like

```
public ActionResult ContactUs(Models.Contact.IContact model)

```

which I can then cast to the desired type.

However, MVC doesn't appear to let me use either interfaces or abstract classes as the parameter.

What other option is there? Is my only option to create multiple methods in the controller, such as

```
public ActionResult SendEnquiry(Models.Contact.Enquiry model)

public ActionResult SendComplaint(Models.Contact.Complaint model)  

public ActionResult SendJoin(Models.Contact.Join model)

```

I don't believe I'm allowed to overload this so I can't have

```
public ActionResult Send(Models.Contact.Enquiry model)

public ActionResult Send(Models.Contact.Complaint model)  

public ActionResult Send(Models.Contact.Join model)

```