• Как правильно использовать async/await в "Репозиторий-Сервис-Контроллер" архитектуре?

    @dmitryKovalskiy
    программист средней руки
    Метод GetLatestAsync у вас обещает вернуть Task, а возвращает объект. объявите его асинхронным(async).
    То что вы не вызываете внутри асинхронных методом - асинхронные какие-либо другие методы конечно плохо, но не смертельно.
    Какие есть пути решения?
    1) Ваш репозиторий должен работать асинхронно(если используете EF - у него есть все необходимые методы. Если используете ADO.NET - зависит от версии .NET. Можно подключить Dapper и репозиторий тоже станет асинхронным)
    2) убрать async/await из объявления метода GetLatestAsync. Пусть просто вернет модель, а не Task<Модель>. Опять же - ваш интерфейс обещает одно, а делает другое. Если внутри реализации нет асинхронности - накой вы ее объявили? На будущее? Тогда см. п.1
    Ответ написан
    1 комментарий
  • Как правильно проверить разрешение изображения с помощью jQuery перед загрузкой?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Я бы сделал так. Повесил бы на input file обработчик onchange, в нем бы определил ширину и высоту картинки, и засунул это дело в dataset, а в фильтре уже делал проверку из dataset значений.

    $('#FacebookImage').on('change',function(){
                var elem = this;
                var _URL = window.URL;
                    var file, img;
                    if ((file = elem.files[0])) {
                        img = new Image();
                        img.onload = function () {
                            elem.dataset['imageWidth'] = this.width;
                            elem.dataset['imageHeight'] = this.height; 
                        };
                        img.src = _URL.createObjectURL(file);
                }
    });

    И теперь в валидатор такой
    $.validator.addMethod("data-rule-imageFacebookResolution", function (value, elem, attrValue) {
       var width = parseInt(elem.dataset['width']);
       var height = parseInt(elem.dataset['height']);
       
       if width  < 520 && height  < 290) {
          return false;
       } 
       return true;
    });

    Таким образом, получение размеров картинки происходит при выборе файла, а пока пользователь дотянется к кнопке "отправить", картинка уже загрузится, ну или можно еще блокировать кнопку "отправить" пока не произойдет onload картинок.
    Код может быть не правильным, я не пробовал, набирал как есть, но думаю мысль ясна.
    Ответ написан
    3 комментария
  • Как заставить работать пагинацию используя PartialView() с Ajax.BeginForm()?

    @kttotto
    пофиг на чем писать
    Ну так Вы фильтруете данные только при загрузке страницы, а в Summary фильтрации нет, Вы берете все Furnitures и только сортируете, поэтому при клике на другую страницу выдаст все что у Вас есть. Попробуйте вынести фильтрацию из List в отдельный метод и применить ее так же и к result в Summary.
    Ответ написан
    6 комментариев
  • Как отобразить несколько изображений из файловой системы в проекте .Net?

    Контроллер:
    private readonly IApplicationEnvironment _appEnvironment;
    public YourController(IApplicationEnvironment appEnvironment)
    {
          _appEnvironment = appEnvironment;
    }
    public ActionResult Create()
    {
          YourModel model = new YourModel();
          string path = _appEnvironment.ApplicationBasePath + "\\wwwroot\\Content\\Default";   // получим путь к файловой системе
          model.Photo = ImageToByte(path + "\\Image.png");
    }
    
    private byte[] ImageToByte(string path)
    {
         Image image = Image.FromFile(path);
         MemoryStream memoryStream = new MemoryStream();
         image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
         return memoryStream.ToArray();
    }

    Вьюшка:
    @Html.Raw("<img style='width:50px;'  src=\"data:image/jpeg;base64," + Convert.ToBase64String(Model.Photo) + "\" />")
    Ответ написан
    Комментировать