C # Отправка данных изображения для просмотра с двойной косой чертой, которая нарушает Src изображения - PullRequest
1 голос
/ 04 апреля 2019

Я работаю над отправкой изображений, извлеченных из базы данных, в представление.

Я преобразовал данные изображения byte[] в строку и отправил их в представление с помощью ViewBag

* 1006.* Строка src-образа содержит //, который экранирует остальную часть строки и содержит ошибки на стороне клиента.

Как решить эту проблему?

Ошибка:

enter image description here enter image description here

Контроллер:

string imgSrc = null;
string base64 = null;
if (viewModel.Image != null)
{
    base64 = Convert.ToBase64String(viewModel.Image);
    imgSrc = string.Format("data:image/png;base64,{0}", base64);
}
ViewBag.ImageSource  = imgSrc;

Просмотр:

@{
    var propertyId = Model.PropertyId;
    var imageSource = ViewBag.ImageSource;
}
<div id="example" class="k-content">

<div class="demo-section k-content wide">
    <div class="wrapper">
        <div id="images">
            <div class="image">
                <img src="@imageSource"/>
            </div>

        </div>
        <div class="dropZoneElement">
            <div class="textWrapper">
                <p>Add Image</p>
                <p class="dropImageHereText">Drop image here to upload</p>
            </div>
        </div>
    </div>
</div>

<input name="files" id="files" type="file" />

<script type="text/x-kendo-template" id="template">
    <div class="image"></div>
</script>

<script type="text/javascript">
    $(function () {
        var template = kendo.template($("#template").html());

        var initialFiles = [];
        var image = @imageSource;

        $("#images").html(kendo.render(template, initialFiles));

        $("#images").append('<div class="image"><img src="' + image + '" /></div>');

        $("#files").kendoUpload({
            async: {
                saveUrl: "save?id=" + @propertyId,
                removeUrl: "remove",
                autoUpload: true
            },
            multiple: false,
            validation: {
                allowedExtensions: [".jpg", ".jpeg", ".png", ".bmp", ".gif"]
            },
            success: onSuccess,
            dropZone: ".dropZoneElement"
        });

        function onSuccess(e) {
            if (e.operation == "upload") {
                var file = e.files[0].rawFile;

                if (file) {
                    var reader = new FileReader();

                    reader.onloadend = function () {
                        $("#images").empty().append("<div class='image'><img src=" + this.result + " /></div>");
                    };

                    reader.readAsDataURL(file);
                }
            }
            if (e.operation == "remove") {
                $("#images").empty();
            }
        }
    });

</script>

1 Ответ

1 голос
/ 04 апреля 2019

Эта строка вызывает проблему:

'<div class="image"><img src=' + @imageSource + ' /></div>'

, а также эта строка:

var image = @imageSource;

должна быть:

var image = "@imageSource";

Измените ее на:

'<div class="image"><img src="' + image + '" /></div>'
// Add double quotes         ^-------------^ 

Вы добавляете строку image без двойных кавычек в изображение src, так что она выглядит примерно так:

<img src=some string /> 

, но должна иметь вид:

<img src="some string" /> 

А также измените @imageSource на image

Вы, конечно, можете использовать одинарные кавычки, но их нужно перепрограммировать как:

'<div class="image"><img src=\'' + image + '\' /></div>'

Решение 2 :

Просто удалите строку:

var image = @imageSource;

из своего javascript и измените строку:

$("#images").append('<div class="image"><img src="' + image + '" /></div>');

на:

$("#images").append('<div class="image"><img src="@imageSource" /></div>');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...