- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这与过去的一些问题重复。但没有真正的解决方案。
我正在使用 .Net Core 3 多页模板。我已经尝试了下面给出的一切。但是没有用。
这是我的应用项目界面:
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using TSE.Kalibrasyon.Roles.Dto;
using TSE.Kalibrasyon.Users.Dto;
namespace TSE.Kalibrasyon.Labs
{
public interface ILabAppService : IApplicationService
{
string Test();
Task<List<Entities.Labs.Labs>> GetAllAsync();
System.Threading.Tasks.Task Update(Entities.Labs.Labs input);
System.Threading.Tasks.Task Create(Entities.Labs.Labs input);
}
}
实现如下:
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Abp.Authorization;
using Abp.Domain.Entities;
using Abp.Domain.Repositories;
using Abp.Extensions;
using Abp.IdentityFramework;
using Abp.Linq.Extensions;
using Abp.Localization;
using Abp.Runtime.Session;
using Abp.UI;
using TSE.Kalibrasyon.Authorization;
using TSE.Kalibrasyon.Authorization.Accounts;
using TSE.Kalibrasyon.Authorization.Roles;
using TSE.Kalibrasyon.Authorization.Users;
using TSE.Kalibrasyon.Roles.Dto;
using TSE.Kalibrasyon.Users.Dto;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using TSE.Kalibrasyon.Entities.Labs.Dto;
using TSE.Kalibrasyon.Entities.Labs;
using TSE.Kalibrasyon.Labs.Dto;
using Abp.Web.Models;
using Newtonsoft.Json;
using Microsoft.AspNetCore.Mvc;
namespace TSE.Kalibrasyon.Labs
{
//[AbpAuthorize(PermissionNames.Pages_Users)]
public class LabAppService : KalibrasyonAppServiceBase, ILabAppService
{
private readonly IRepository<Entities.Labs.Labs> _labRepository;
public LabAppService(IRepository<Entities.Labs.Labs> labRepository)
{
_labRepository = labRepository;
}
[Microsoft.AspNetCore.Mvc.HttpGet]
public string Test()
{
return "merhaba";
}
[DontWrapResult]
public async Task<List<Entities.Labs.Labs>> GetAllAsync()
{
//var chk = await _labRepository.GetAllListAsync();
return await _labRepository.GetAllListAsync();
}
[DontWrapResult]
//public List<Entities.Labs.Labs> GetAll2()
public object GetAll2()
{
List<Entities.Labs.Labs> chk = _labRepository.GetAllListAsync().Result;
//return _labRepository.GetAllListAsync().Result;
var bak= new { Items = chk, Count = chk.Count() };
return new { Items = chk, Count = chk.Count() };
//return Json(new { Items = chk, Count = chk.Count() }, new JsonSerializerSettings { ContractResolver = new PascalCasePropertyNamesContractResolver() });
}
[DontWrapResult]
public string GetAll3()
{
List<Entities.Labs.Labs> chk = _labRepository.GetAllListAsync().Result;
var obj= new { Items = chk, Count = chk.Count() };
//return Json(new { Items = chk, Count = chk.Count() }, new JsonSerializerSettings { ContractResolver = new PascalCasePropertyNamesContractResolver() });
var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
//var text = JsonConvert.SerializeObject(configuration, settings);
var text = JsonConvert.SerializeObject(obj);
return text;
//return Json(new { Items = chk, Count = chk.Count() });
}
public async Task Update(Entities.Labs.Labs input)
{
await _labRepository.UpdateAsync(input);
}
public async Task Create(Entities.Labs.Labs input)
{
await _labRepository.InsertAsync(input);
}
}
//public class Data
//{
// public bool requiresCounts { get; set; }
// public int skip { get; set; }
// public int take { get; set; }
//}
}
响应正文是:
[
{
"labName": "BASINÇ KALİBRASYON LABORATUVARI",
"labKod": "BAS",
"bolgeKodu": 5,
"id": 1
}
]
我对这个实体的模型是:
using Abp.Domain.Entities;
using Abp.Domain.Repositories;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
namespace TSE.Kalibrasyon.Entities.Labs
{
[Table("Labs")]
public partial class Labs : Entity
{
private readonly IRepository<Labs> _lablarRepository;
//private readonly TownAppService _townAppService;
//private readonly IRepository<Town> _townRepository;
public Labs()
{
//this.Towns = new List<Town>();
//this.Districts = new List<District>();
//this.Neighborhoods = new List<Neighborhood>();
OnCreated();
}
//[System.ComponentModel.DataAnnotations.Key]
//[System.ComponentModel.DataAnnotations.Required()]
//public virtual int Id
//{
// get;
// set;
//}
[System.ComponentModel.DataAnnotations.Required()]
public virtual string LabName
{
get;
set;
}
[System.ComponentModel.DataAnnotations.StringLength(3)]
[System.ComponentModel.DataAnnotations.Required()]
public virtual string LabKod
{
get;
set;
}
[System.ComponentModel.DataAnnotations.Required()]
public virtual int BolgeKodu
{
get;
set;
}
#region Extensibility Method Definitions
partial void OnCreated();
#endregion
}
}
还有一个大问题,我正在使用 Syncfusion .Net Core Grid 作为第三方工具。它需要一种数据库操作方法,如下所示。
[IgnoreAntiforgeryToken]
public IActionResult UrlDatasource([FromBody]DataManagerRequest dm)
{
Api api=new Api();
//IEnumerable DataSource = Orders.GetAllRecords();
IEnumerable DataSource = api.LabsGetAll();
DataOperations operation = new DataOperations();
if (dm.Search != null && dm.Search.Count > 0)
{
DataSource = operation.PerformSearching(DataSource, dm.Search); //Search
}
if (dm.Sorted != null && dm.Sorted.Count > 0) //Sorting
{
DataSource = operation.PerformSorting(DataSource, dm.Sorted);
}
if (dm.Where != null && dm.Where.Count > 0) //Filtering
{
DataSource = operation.PerformFiltering(DataSource, dm.Where, dm.Where[0].Operator);
}
int count = DataSource.Cast<Entities.Labs.Labs>().Count();
if (dm.Skip != 0)
{
DataSource = operation.PerformSkip(DataSource, dm.Skip); //Paging
}
if (dm.Take != 0)
{
DataSource = operation.PerformTake(DataSource, dm.Take);
}
return dm.RequiresCounts ? Json(new { result = DataSource, count = count }) : Json(DataSource);
}
当我不使用 [IgnoreAntiforgeryToken] 作为方法时。它没有命中带有 HTTP ERROR 415 的方法。
Syncfusion 说,它只是因为驼色外壳而提供添加
services.PostConfigure<MvcJsonOptions>(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
进入 StartUp 文件的 ConfigureServices 方法。但我认为它只适用于.net core 2.x。 ABP 在 .net core 3.0 上工作对我来说不是解决方案
我在 Host App 中的 StartUp.cs 是:
using System;
using System.Linq;
using System.Reflection;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Castle.Facilities.Logging;
using Abp.AspNetCore;
using Abp.AspNetCore.Mvc.Antiforgery;
using Abp.Castle.Logging.Log4Net;
using Abp.Extensions;
using TSE.Kalibrasyon.Configuration;
using TSE.Kalibrasyon.Identity;
using Abp.AspNetCore.SignalR.Hubs;
using Abp.Dependency;
using Abp.Json;
using Microsoft.OpenApi.Models;
using Newtonsoft.Json.Serialization;
using Microsoft.AspNetCore.Mvc;
namespace TSE.Kalibrasyon.Web.Host.Startup
{
public class Startup
{
private const string _defaultCorsPolicyName = "localhost";
private readonly IConfigurationRoot _appConfiguration;
public Startup(IWebHostEnvironment env)
{
_appConfiguration = env.GetAppConfiguration();
}
public IServiceProvider ConfigureServices(IServiceCollection services)
{
//MVC
services.AddControllersWithViews(
options =>
{
options.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute());
}
).AddNewtonsoftJson(options =>
{
//options.SerializerSettings.ContractResolver = new AbpMvcContractResolver(IocManager.Instance)
//{
// NamingStrategy = new CamelCaseNamingStrategy()
//};
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
services.PostConfigure<MvcNewtonsoftJsonOptions>(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
IdentityRegistrar.Register(services);
AuthConfigurer.Configure(services, _appConfiguration);
services.AddSignalR();
// Configure CORS for angular2 UI
services.AddCors(
options => options.AddPolicy(
_defaultCorsPolicyName,
builder => builder
.WithOrigins(
// App:CorsOrigins in appsettings.json can contain more than one address separated by comma.
_appConfiguration["App:CorsOrigins"]
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(o => o.RemovePostFix("/"))
.ToArray()
)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
)
);
// Swagger - Enable this line and the related lines in Configure method to enable swagger UI
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new OpenApiInfo() { Title = "Kalibrasyon API", Version = "v1" });
options.DocInclusionPredicate((docName, description) => true);
// Define the BearerAuth scheme that's in use
options.AddSecurityDefinition("bearerAuth", new OpenApiSecurityScheme()
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
});
// Configure Abp and Dependency Injection
return services.AddAbp<KalibrasyonWebHostModule>(
// Configure Log4Net logging
options => options.IocManager.IocContainer.AddFacility<LoggingFacility>(
f => f.UseAbpLog4Net().WithConfig("log4net.config")
)
);
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.UseAbp(options => { options.UseAbpRequestLocalization = false; }); // Initializes ABP framework.
app.UseCors(_defaultCorsPolicyName); // Enable CORS!
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAbpRequestLocalization();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<AbpCommonHub>("/signalr");
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute("defaultWithArea", "{area}/{controller=Home}/{action=Index}/{id?}");
});
// Enable middleware to serve generated Swagger as a JSON endpoint
app.UseSwagger();
// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint(_appConfiguration["App:ServerRootAddress"].EnsureEndsWith('/') + "swagger/v1/swagger.json", "Kalibrasyon API V1");
options.IndexStream = () => Assembly.GetExecutingAssembly()
.GetManifestResourceStream("TSE.Kalibrasyon.Web.Host.wwwroot.swagger.ui.index.html");
}); // URL: /swagger
}
}
}
有没有你可能知道的解决方案?提前致谢。
还有,使用 JsonResult 控制属性名称的序列化。但是没用。请问有什么办法吗?
最佳答案
在 .NET Core 3.x 中,您现在需要修改 JsonSerializerOptions.PropertyNamingPolicy
.
对于 PascalCase — 遵循您的原始属性名称 — 设置为 null
:
services.AddMvc(...)
.AddJsonOptions(jsonOptions =>
{
jsonOptions.JsonSerializerOptions.PropertyNamingPolicy = null;
});
对于小写(或其他自定义命名策略),子类 JsonNamingPolicy
并覆盖 ConvertName
方法。
services.AddMvc(...)
.AddJsonOptions(jsonOptions =>
{
jsonOptions.JsonSerializerOptions.PropertyNamingPolicy = new JsonLowercaseNamingPolicy();
});
public class JsonLowercaseNamingPolicy : JsonNamingPolicy
{
public override string ConvertName(string name) => name.ToLowerInvariant();
}
关于aspnetboilerplate - 将 JSON 序列化从 camelCase 更改为 PascalCase [重复 - 没有解决方案?],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59559560/
我使用 aspnetboilerplate (MVC) 并希望实现忘记密码功能,以允许用户使用登录屏幕上的链接重置自己的密码。 我想这可以通过生成密码重置代码来工作,然后通过电子邮件发送给用户。用户点
我需要确保我的应用程序本身能够升级他的数据库模型(应用迁移) 在 ABP 架构中,我应该在哪里调用 Migrate? context.Database.Migrate(); 由于这是对基础结构逻辑(
我正在使用 aspNetBoilerplate 发送电子邮件(或尝试发送电子邮件) 我已经使用种子数据中的默认设置创建器将设置添加到数据库中,就像这样 namespace ESMPortal.Enti
我正在实现将统计数据发送到主页(仪表板应用程序页面)的应用程序服务。 根据用户的角色(服务需要身份验证),我将使用基于角色的WhereIf()从数据库中提取/聚合数据 特别是如果用户是管理员,我不会使
我刚刚用 Angular 5 下载了最新版本的 AspNetBoilerplate 3.7,我试图使用我创建的新服务。它没有出现在服务代理中。如何从 swagger 更新自动生成的代码? 最佳答案 转
我已经下载了 Angular 5 / .NET 5 project ,通常当我运行命令 npm install 时,我没有任何问题。 但是从昨天开始下载项目并运行此命令时,我收到此错误: C:\Use
我正在尝试扩展 AuditLog 中的实体ASPNET 样板 框架,以便为其添加一些新属性。我试图扩展 AuditLog类 ( ExtendedAuditInfo ) 并实现 AuditStore 的
我正在尝试使用 AspBoilerPlate 作为框架,因为它看起来非常好,而且我一直很难尝试在 Owin Identity 上实现 Multi-Tenancy (几天前我发布了一个问题:Asp.Ne
我正在 ASP.NET 样板引擎中开发服务并从主题中获取错误。错误的性质不清楚,因为我从 ApplicationService 继承,如文档所示。代码: namespace MyAbilities.A
我在整个应用程序中都需要数据库中的一些主数据。那么在应用程序中定义这些数据的最佳方法是什么?以及我应该在应用程序中的何处定义,以便每次应用程序启动时我都会在我的应用程序中初始化此主数据。我应该在哪里定
我正在使用 ABP Boilerplate 6.0 并将 NRules 与我们的平台集成。 我能够使下面的规则起作用,但问题是我不能在规则条件中使用注入(inject)的“_questionRespo
对许多人来说可能是一个愚蠢的问题,但我们正在考虑为我们的下一个项目采用 ASP.NET 样板。有点困惑,因为它似乎有 2 个不同的网站和 2 个不同的 Git 存储库。 第一个是 https://as
是否有任何简单的方法可以在 ASP.NET 样板解决方案中的表示层中实现分页,例如 PagedList.Mvc Nuget 包中的 PagedList 。 我从 Nuget gallery 安装了 P
是否有任何简单的方法可以在 ASP.NET 样板解决方案中的表示层中实现分页,例如 PagedList.Mvc Nuget 包中的 PagedList 。 我从 Nuget gallery 安装了 P
我正在将我的 .NET MVC5 模板转换为 ASPNETZERO 的 .NET Core MVC 模板。因此,我正在转换的所有代码都按照我在 MVC5 模板解决方案中的需要工作。我的方法代码如下所示
我已经使用优秀的 aspnetboilerplate.com 创建了一个项目,但我正在尝试将它用于我现有的 Angular 项目。 我正在尝试设置身份验证功能(用户登录等)。 我已将以下包添加到我的
我正在将我自己的模板集成到 ASP.NET Boilerplate 中,现在我遇到了 JavaScript 错误。 (function() { $(function() { v
我知道这与过去的一些问题重复。但没有真正的解决方案。 One of the related links Another one 我正在使用 .Net Core 3 多页模板。我已经尝试了下面给出的一切
当我尝试使用 app.UseHttpsRedirection() 方法时,它给我一个构建错误: 'IApplicationBuilder' does not contain a definition
当我尝试使用 app.UseHttpsRedirection() 方法时,它给我一个构建错误: 'IApplicationBuilder' does not contain a definition
我是一名优秀的程序员,十分优秀!