You cannot send complex objects as follows:
<%=Url.Action("GetImageForArticle", "Resources", new { article = item })%>
Only simple scalar properties:
<%=Url.Action("GetImageForArticle", "Resources", new { Id = item.Id, Foo = item.StringFoo, Bar = item.IntegerBar })%>
Therefore, it is good practice in this case to send only id:
<%=Url.Action("GetImageForArticle", "Resources", new { id = item.Id }) %>
and then, so that your controller action selects the appropriate model from any point where it is stored, enter this identifier:
public ActionResult GetImageForArticle(int id) { ArticleSummary article = _someRepository.GetArticle(id); if (article == null || !article.ContainsValidThumbNail()) { return null; } return File(article.ThumbNail, article.ThumbNaiType); }
source share