Как работает Url.Action Asp.net MVC?

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

Если бы я должен был сделать что-то вроде вида в представлении

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

Предполагается ли это показывать?

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

Или будет ли значение атрибута src фактически заменено на результаты действия UserIontroller GetImage?

Ответ 1

Он построит путь к действию, возвращая 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" );
}

}