Как проверить, что файл не содержит результатов в представлении mvc - PullRequest
1 голос
/ 19 августа 2011

У меня есть метод контроллера, как показано ниже, для отправки изображения в представление MVC для отображения

public FileResult ShowImage(GuidID)

{

DataServiceClient client = new DataServiceClient ();

 AdviserImage result;

result = client.GetAdviserImage(ID);


return File(result.Image, "image/jpg"  );

}

, на мой взгляд, я использую

<img src="<%= Url.Action("ShowImage", "Adviser", new { ID = Model.AdviserID }) %>" alt="<%:Model.LicenceNumber %>" />

для отображения изображения

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

Ответы [ 2 ]

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

Вам понадобится другое отдельное действие контроллера, которое проверяет хранилище данных и возвращает ContentResult, которое будет либо true, либо false (или какой-либо другой строкой, которую вы хотите указать, имеет ли идентификатор байты или нет), и тогда в представлении вам понадобится это:

if(@Html.Action("action", "controller").ToString().Equals("true", StringComparison.OrdinalIgnoreCase)){
// render image tag with the call to the other action that returns FileResult
}

Другой вариант заключается в том, что у вас есть модель представления, которая содержит ссылку на байты изображения. Таким образом, вы подготавливаете модель для представления (родительскую модель) в контроллере и вытягиваете туда байты для изображения, тогда в представлении у вас будет:

if(Model.ImageBytes.Length() > 0) {
... do something
}

с ImageBytes свойством типа byte[]

Например, это фрагмент из одного из моих просмотров:

@model pending.Models.Section
@if (Model != null && Model.Image != null && Model.Image.ImageBytes.Count() > 0)
{
    <a href="@Model.Url" rel="@Model.Rel">
        <img title="@Model.Title" alt="@Model.Title" src="@Url.Action(MVC.Section.Actions.Image(Model.Id))" /></a>
}

НТН

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

Почему бы не проверить нулевое значение в вашем контроллере и не показывать логику:

result = client.GetAdviserImage(ID);
if (result == null)
{
    result = AdviserImage.Missing;
}

Вы можете создать изображение по умолчанию и сделать его статичным.Если вы действительно не хотите отображать изображение, то создайте метод расширения Html, чтобы сохранить логику вне поля зрения:

public static string AdviserImage(this HtmlHelper helper, AdviserImage image, int id, int lic)
{
    if (image != null)
    {
        string url = string.Format("/Adviser/ShowImage/{0}", id);
        string html = string.Format("<img src=\"{0}\" alt=\"{1}\" />", url, image.lic);
        return html;
    }
    return string.Empty; // or other suitable html element
}
...