Bast Practise: ASP.NET MVC Controller/Action with multiple object types
I'm looking for the best method for the following issue I have.
I current have a large number of objects that all inherit for a single base object and are all very similar. Is there a solution available the will allow one create action and one edit action without needing to replicate a lot of the same code.
So for example I might have a person object:
public class PersonBase
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
And then I will have a number of objects the inherit from Person
like:
public class SalesPerson : PersonBase
{
public double TotalCommission { get; set; }
}
public class Customer: PersonBase
{
public string Address { get; set; }
}
Now currently I have an action that will create a customer base:
[HttpPost]
public virtual ActionResult Create(FormCollection collection)
{
var person = new PersonBase();
UpdateModel(person);
if ( Model.IsValid && person.IsValid )
{
// Save to the db
}
return View();
}
Now I can quite easily copy this code and modify it so I can create a salesPerson and customer but I will have a large number o开发者_开发技巧f objects based off PersonBase and it would be a lot of repetition of similar code which I would like to avoid.
Is the way of making the Create action more generic for all types of Person?
Thanks
The solution I found that worked for me was to use the dynamic
from C# 4. So my code looks like:
[HttpPost]
public virtual ActionResult Create(int type, FormCollection collection)
{
dynamic person = new PersonBase();
if ( type == 1 )
person = new SalesPerson();
else if ( type == 2 )
person = new Customer();
UpdateModel(person);
if ( Model.IsValid && person.IsValid )
{
// Save to the db
}
return View();
}
精彩评论