Ответы пользователя по тегу ASP.NET
  • Не приходит значение View?

    @Prorom-exe Автор вопроса
    .NET developer
    Решение было следующее, EF нужно было прописать провайдер для того, чтобы он мог мапать числа с плавающей точкой адекватно.
    //в стартапе
    services.AddControllersWithViews(
                    options => options.ModelBinderProviders.Insert(0, new InvariantDecimalModelBinderProvider()));
    
    public class InvariantDecimalModelBinderProvider : IModelBinderProvider
        {
            private readonly ILoggerFactory loggerFactory;
    
            public IModelBinder GetBinder(ModelBinderProviderContext context)
            {
                if (context == null) throw new ArgumentNullException(nameof(context));
    
                if (!context.Metadata.IsComplexType && (context.Metadata.ModelType == typeof(decimal) || context.Metadata.ModelType == typeof(decimal?)))
                {
                    ILoggerFactory loggerFactory = context.Services.GetRequiredService<ILoggerFactory>();
                    return new InvariantDecimalModelBinder(context.Metadata.ModelType, loggerFactory);
                }
    
                return null;
            }
        }
    
        public class InvariantDecimalModelBinder : IModelBinder
        {
            private readonly SimpleTypeModelBinder _baseBinder;
    
            public InvariantDecimalModelBinder(Type modelType, ILoggerFactory loggerFactory)
            {
                _baseBinder = new SimpleTypeModelBinder(modelType, loggerFactory);
            }
    
            public Task BindModelAsync(ModelBindingContext bindingContext)
            {
                if (bindingContext == null) throw new ArgumentNullException(nameof(bindingContext));
    
                var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
    
                if (valueProviderResult != ValueProviderResult.None)
                {
                    bindingContext.ModelState.SetModelValue(bindingContext.ModelName, valueProviderResult);
    
                    var valueAsString = valueProviderResult.FirstValue;
                    decimal result;
    
                   
                    if (decimal.TryParse(valueAsString, NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out result))
                    {
                        bindingContext.Result = ModelBindingResult.Success(result);
                        return Task.CompletedTask;
                    }
                }
    
               it
                return _baseBinder.BindModelAsync(bindingContext);
            }
        }
    Ответ написан
    Комментировать
  • Нужна помощь с тех. заданием. Что гуглить?

    @Prorom-exe
    .NET developer
    Если только начинаешь изучать ASP то для того,чтобы грамотно и с пониманием, а не копипастом все сделать. придётся для начала хорошенько в основах разобраться и повышать свой скилл. А не сразу на это лезть)
    Ответ написан
    Комментировать
  • Не выводится объекты определенного url адреса?

    @Prorom-exe
    .NET developer
    Ответил в аналогичном вопросе тебе. Там все описал. Ищи решения таких легких вопросов сам, литературы полно. А иначе как научишься программировать, на форуме?
    Ответ написан
  • Товары у которых есть данный url адрес не выводится и вдобавок товары помечены как избранные перестали добавлятся?

    @Prorom-exe
    .NET developer
    Проблема рядовая, поставь точки остановки пройдись ручками по методу. Глянь какой объект уходит на вьюшку. Бежать на форум за ответом самый простой вариант))

    P.S Лучше для фильтрации на контроллер отправлять не имя, а Id. И вместо того,чтобы городить else If используй switch
    Ответ написан
  • Как исправить обрезания адреса html.Action?

    @Prorom-exe
    .NET developer
    Используй атрибуты
    [Route("name")]
    Controller() {}
    P.S Вроде еще нужно эндпоинты почекать,чтоб работало
    Ответ написан
    Комментировать