Проблема с несколькими вызовами getImage в MVC3 Razor - PullRequest
0 голосов
/ 20 августа 2011

Я использую Razor MVC3. Мне нужно показать изображения, хранящиеся в базе данных, в нескольких видах (что-то вроде изменения логотипа сайта).

Я решил это с помощью функции, которая возвращает FileContentResult. Пример:

    public FileContentResult GetFile(int id)
    {
        govImage image = db.Image.Single(i => i.imageID == id);
        return File(image.logo, "image", image.fileName);
    }

В представлениях я вызываю функцию следующим образом:

<img id="image" src="GetFile/@ViewBag.ImageIndex" width="112" height="87" alt="Image Example" />

И в контроллерах я загружаю ViewBag.ImageIndex с выводом функции, вот так:

ViewBag.ImageIndex = oValid.returnUniqueIndex();

Это прекрасно работает с некоторыми представлениями, но в других функция GetFile не вызывается (я следил за процессом в режиме отладки), даже когда контроллер присваивает правильное значение в ViewBag.ImageIndex.

Я потерял целый день, пытаясь выяснить, что происходит. Кто-нибудь может дать мне подсказку?

Заранее спасибо

1 Ответ

0 голосов
/ 20 августа 2011

Вы используете относительный URL (GetFile/@ViewBag.ImageIndex), относительный относительно текущего пути, а не корневой путь.Это означает, что если ваше действие GetFile является членом вашего HomeController, ваша ссылка не будет работать с представлениями, сгенерированными другими контроллерами.

Вместо этого следует использовать что-то вроде:

<img id="image" src="/Controller/GetFile/@ViewBag.ImageIndex" alt="Image Example" />

еще лучше:

<img id="image" src="@Url.Action("GetFile", "ControllerName", new { ViewBag.ImageIndex })" alt="Image Example" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...