Вы можете использовать оба:
- ViewData["MyName"] = product.SingleOrDefault();
Таким образом, из вида, который вы делаете:
<% Product p = (Product)ViewData(p) %>
или заполните модель:
ViewData.Model = product.SingleOrDefault();
Таким образом, из вида, который вы сделали бы:
<%Product p = ViewData.Model%> //in case of a Strongly typed view
<%Product p = (Product)ViewData.Model%> //otherwise
После заполнения ViewData или Model вы можете позвонить:
return View();
Другой подход - вызвать перегрузку View, которая принимает модель в качестве параметра, как сказал tvanfosson.