I’m taking an object and writing its properties to a model, then showing the model in my view for editing. Afterwards, the user hits submit and the model is posted back to my controller. I would now like to take the model’s properties and write them back to the object.
I am considering using reflection to do so, but I am a bit wary. Thought I would check if there is a more obvious answer.
Code:
//OrderDetailsModel
public OrderDetailsModel(Order order)
{
CompletionDateTime = order.CompletionDateTime;
CreateDateTime = order.CreateDateTime;
UpdateDateTime = order.UpdateDateTime;
BusinessArea = order.BusinessArea;
Comment = order.Comment;
CostCenter = order.CostCenter;
CreateUsername = order.CreateUsername;
Customer = order.Customer;
IncidentNumber = order.IncidentNumber;
OrderID = order.ID;
OrderStatus = order.OrderStatus;
ProjectName = order.ProjectName;
ProjectNumber = order.ProjectNumber;
ProjectSubcode = order.ProjectSubcode;
UpdateUsername = order.UpdateUsername;
Description = order.Description;
}
//OrdersController
public ActionResult SaveOrderDetails(OrderDetailsModel orderDetailsModel)
{
Order order = WorkflowManager.GetOrderByID(orderDetailsModel.OrderID);
foreach(PropertyInfo propertyInfo in orderDetailsModel.GetType().GetProperties)
{
//Write properties back.
}
return null;
}
Thoughts on how to do this?
Have a look at AutoMapper. It makes short work of this left hand<->right hand coding.
Here’s an example: