I want to read value of a T type
public virtual ActionResult Edit(TEditDTO editedDTO) { if (!ModelState.IsValid) return View(editedDTO);
You should pass the instance of TEditDTO to GetValue method not the type instance.
TEditDTO
GetValue
var Id = prop.GetValue(editedDTO);