2013-11-29 3 views
1

Моя тестовая установка состоит из представления с foreach, которое выполняет итерацию по простой модели с целью визуализации изображения для каждого элемента коллекции моделей. Внутри цикла находятся два помощника @ Url.Action, которые вызывают методы FileContentResult в контроллере, которые идентичны, за исключением того, что один принимает параметры из представления, а другой имеет переменные параметров, жестко закодированные.MVC Controller FileContentResult метод не вызывается

@foreach (var i in Model.FeaturedItems) 
{ 
<img src="@Url.Action("GetFooImage", "Home", new {})" alt="@i.Name" /> 
<img src="@Url.Action("GetFoobarImage", "Home", new {i.ItemID, Entity="item", Size="m"})" alt="@i.Name" /> 
} 

В мой контроллер эти два метода:

public FileContentResult GetFooImage() // variables hard coded in body 
public FileContentResult GetFoobarImage(int id, string entity, string size) 

GetFooImage() возвращает изображение. FileContentResult GetFoobarImage() не делает.

Это тайна: Если я поставил точку останова на GetFoobarImage, то даже не попал. Я не могу понять, почему GetFooImage вызывается, но GetFoobarImage этого не делает.

ответ

4

Дважды проверьте Url.Action

@ Url.Action ("GetFoobarImage", "Начало", новый {i.ItemID, Entity = "элемент", размер = "м"})»

ваш отсутствующий «ID =» в вызове. Он должен быть

@Url.Action("GetFoobarImage", "Home", new {id = i.ItemID, Entity="item", Size="m"}) 

Также дважды проверить подпись. Существует проблема с Entity в Url.Action соответствие с Entiry в вашем объявлении метода. Не уверен, что если это опечатка в вашем примере.

+0

Хорошая добыча! Это был бит. ID = i.ItemID исправил это. Отсутствует инициализатор анонимного типа. – GDB

+0

Спасибо! – muglio

Смежные вопросы