Чтобы минимизировать это, вы можете использовать отражение для достижения на самом чистом уровне.
Пусть это будет ваш ViewModel
:
public class Prospect
{
public string Name { get; set }
public string Address { get; set; }
public string PostCode { get; set; }
public string Tel { get; set; }
public string Email { get; set; }
}
Это ваш Action
:
public ActionResult ViewProspect()
{
Prospect prospect = new Prospect {
Name = "Jackson",
Address = "21, Some hills",
PostCode = "90210",
Tel = "505123412",
Email = "jack@son.com"
};
Func<string, string> getStringValue = (value) => value == null ? string.Empty : value.ToString();
IEnumerable<KeyValuePair<string, string>> prospectKeyValue = typeof(Prospect).GetProperties().Select(
p => new KeyValuePair<string, string>(p.Name, getStringValue(p.GetValue(prospect, null))));
ViewBag.Prospect = prospectKeyValue;
View();
}
А вот ваш упрощенный View
:
@{
ViewBag.Title = "Prospect";
}
<h2>@ViewBag.Prospect.Single(p => p.Key == "Name").Value</h2>
<table>
@foreach(var keyValue in ViewBag.Prospect)
{
<tr>
<td>
<b>@keyValue.Key</b>
</td>
<td>@keyValue.Value
</td>
</tr>
}
</table>