I like to take an MVVM style approach to MVC, for example, I use:

    public class Person { }

as my domain model, and

    public class PersonViewModel { }

as my view model. The view model is expressly used with the Controller and View. I also tend to use a mapping framework quite a lot, so I might mock up something like

    public PersonController(IViewModelService<Person> viewModelService)
    {
        _viewModelService = viewModelService;
    }

    public ViewResult Edit(int id) 
    {
        PersonViewModel model = _viewModelService.Get(id);
        return View(model);
    }

    [HttpPost]
    public ViewResult Edit(PersonViewModel model)
    {
        if (ModelState.Valid)
        {
            _viewModelService.Update(model);
        }

        return View(model);
    }

where the `IViewModelService<Person>` service is responsible for mapping my view model back to my domain model `Person`.