Прежде всего
Url.Action("RenderPhoto", Model.Photo)
Не будет работать, Model.Photo (предположительно, ваш байтовый массив) будет обрабатываться как объект для определения значений маршрута. Он сгенерирует маршрут с открытыми свойствами объекта Array, вероятно, в соответствии с
?IsFixedSize=true&IsReadOnly=false&Length=255
Это будет довольно бесполезный URL. Как только страница загружается в браузер, браузер запросит это изображение, вызвав метод RenderPhoto, но нет параметра с именем photo, поэтому привязка будет неудачной, и даже если там был параметр с именем photo (AFAIK), логики в DefaultModelBinder для создания байтового массива из строки, поэтому фотография имеет значение null.
Что вам нужно сделать, это передать анонимный объект со свойством Id в Url.Action
Url.Action("RenderPhoto", new { Id = Model.PhotoId })
Это будет преобразовано в строку запроса, возможно, по следующим направлениям (но это зависит от ваших маршрутов)
/xxx/RenderPhoto/25
А затем вам нужно получить данные для фотографии в вашем методе RenderPhoto
Martin