I seem to be running into a weird issue and after hours of head scratching, I seem to have narrowed the issue down to a combination of [partial classes](https://msdn.microsoft.com/en-us/library/wa80x488.aspx) and [virtual properties](https://msdn.microsoft.com/en-us/library/zdkaw5ss%28v=vs.90%29.aspx). When I override a property that's in a partial class, sitting in a separate file, MVC duplicates the fields on my view. I am using Visual Studio 2013 and the issue can be duplicated by following these steps:

1. Open Visual Studio and create a new Project. Choose Web under the categories, then choose "ASP.NET Web Application". I am targeting .NET 4.5.
2. Choose "Empty" from the template selection, then check the MVC checkbox so it adds the core folders and references.
3. Once the project is created, right-click on the `Models` folder and create a new class called `MyModel.cs`.

Add these lines to the new file:

```
public abstract partial class MyOriginalModel
{
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
}

public partial class MyModel : MyOriginalModel
{

}

```

4. Now right click on the `Models` folder again and create another new class called `MyModelCustom.cs`.

Add these lines to the file:

```
public partial class MyModel
{
    [System.ComponentModel.DisplayName("First Name")]
    [System.ComponentModel.DataAnnotations.Required]
    public override string FirstName
    {
        get
        {
            return base.FirstName;
        }
        set
        {
            base.FirstName = value;
        }
    }

    [System.ComponentModel.DisplayName("Last Name")]
    [System.ComponentModel.DataAnnotations.Required]
    public override string LastName
    {
        get
        {
            return base.LastName;
        }
        set
        {
            base.LastName = value;
        }
    }
}

```

5. Now build the project, then right click on the `Controllers` folder and add a new controller. Choose "MVC 5 Controller with read/write actions" and call it `NamesController`. Right click on the Create method and go to "Add View". Under the template dropdown, choose `Create` and for the Model Class dropdown, choose `MyModel`.

Once MVC creates the template, you will see that it adds `First Name` and `Last Name` twice. The issue seems to be related to partial classes because if I move the contents of `MyModelCustom.cs` into `MyModel.cs`, everything works fine. However, its not just partial classes. If I create a new property (versus overloading one) in the partial class, it does not duplicate that property. So it seems to be a combination of partial classes and overriding virtual properties.

Can someone please confirm if this is a bug or if I am doing something wrong?