You are using MVC. You have an object with a list of items, let us say a person who owns some books.
Viewing this is quite straightforward: you set the model for your view to Person, loop through each book in Person.Books displaying them.
Adding a single new book is also straightforward: have a ViewModel for editing Person, and include in it a set of fields relating to a Book, place a form in your html with @Html.TextBoxFor(model=>model.NewBookTitle) etc, and in your controller, use these fields to create a new Book object.
But what if you want your users to be able to add multiple books at once? Any number of books? You don't want to have 10+ new-book forms cluttering up your page.
Enter Steven Sanderson's BeginCollectionItem.
Some notes (mostly written for myself):
You need Sanderson's BeginCollectionItem reference and Collection view.
In your PersonViewModel, you will need a property of IEnumerable<Book>with public get and set. In your PersonViewModel parameterless constructor, create an empty list of <Book>.
In Shared/EditorTemplates, put an editor for book.
In Shared, put a partial view containing Html.EditorForModel(), and set its model to Book.
In your controller, put a post method which returns the above partial view.
In your PersonView, you will need:
a form with an AddBook button
a div with an id, inside which an EditorFor Model.Books, using Sanderson's "Collection" view
javascript to intercept the AddBook form submit, ajax it to the controller method which returns the partial, and append it to the div