<p>Forgive the vague title, I wasn't sure how to describe it.</p>

<p>If you have a generic model "Archive", how do you show different views/forms based on a user selected 'type'?</p>

<p>For example, the user creates a new "Archive", then gets the choice of video, book, audio etc. From there they get different forms based on the archive type.</p>

<p>Or would it be better to split them into different models - Video, Book, Audio? </p>

<p>Or can models inherit (like Video extends Archive). I guess this is basic OOP / classes, but have no idea how to apply that here.</p>

<p>Examples from any MVC framework are welcome!</p>

Your models Video, Book and Audio can inherit from Archive.
And each model will have a controller.
http://yourserver/Books/Edit/11
You will have to get your user to pick the type of archive they want before you create the corresponding model.
EDIT (in response to comment)
In ASP.NET MVC your model will be a class.
```
```
public class Video : Archive
{  
    public int Id {get;set}
    public string Name {get;set;}     
    ...
}
```
```
You will also have a controller
```
```
public class VideoController : Controller
{
    public object Edit(int id)
    {
        Video myVideo = GetVideo(id);
        return View("Edit", myVideo);
    }
     ...
}
```
```
And you will have a view in the Views directory for example, the page which contains
```
```
public class Edit : View<Video>
{
    ...
}
```
```
So you can call this if you had a URL which was
http://localhost/Video/Edit/11
This was all done from memory, so there may be some mistakes, but the take-home message is that you specify the inheritance at the model.  The model is just a class.  In your case you want to inherit from Archive.  Once you've done that the model is pass around as normal.