Как работает Url.Action Asp.net MVC? - PullRequest
11 голосов
/ 19 ноября 2009

Это в некоторой степени связано с другим вопросом, который я задал, но я понимаю, почему бы не задать его отдельно.

Если бы я поместил что-то вроде следующего в представление

<td><img src='<%= Url.Action( "DisplayImage" , "User" , new { id = item.id} ) %>' alt="" /></td>

Это должно отображать это?

<td>
   <img src='/User.mvc/DisplayImage?id=U00915441' alt="" />
</td>

Или значение атрибута src будет на самом деле заменено результатами действия GetCmage UserController?

1 Ответ

9 голосов
/ 19 ноября 2009

Он создаст путь к действию, возвращая URL, а не результаты выполнения действия.

Результат будет:

<td>
   <img src='/User.mvc/DisplayImage?id=U00915441' alt="" />
</td>

Пример кода. предполагает, что ваша пользовательская модель имеет изображение, хранящееся в байтовом массиве. Если вы используете LINQ и свойство имеет значение Binary , то используйте метод ToArray () , чтобы преобразовать его в байтовый массив. Обратите внимание на атрибуты, которые потребуют, чтобы пользователь вошел в систему и использовал запрос GET.

[Authorize]
[AcceptVerbs( HttpVerbs.Get )]
public ActionResult DisplayImage( string id )
{
     var user = ...get user from database...

     return File( user.Image, "image/jpeg" );
}

}

...