Activities of "liangshiwei"

It is already pre-built into the project

abp new Testapp --old

Hi,

I think there is no problem, you can use suite advanced tab to add navigation Property

Hi,

I can't build the solution

Hi,

You can try upgrading to the 8.3.x version; we fixed it.

you can check this document to know how to add a custom filter.

https://abp.io/docs/latest/framework/infrastructure/data-filtering

We will fix the problem.

https://github.com/abpframework/abp/issues/21443

you can try

add index.js to wwwroot/swagger/ui

/* Source: https://gist.github.com/lamberta/3768814
 * Parse a string function definition and return a function object. Does not use eval.
 * @param {string} str
 * @return {function}
 *
 * Example:
 *  var f = function (x, y) { return x * y; };
 *  var g = parseFunction(f.toString());
 *  g(33, 3); //=> 99
 */
function parseFunction(str) {
    if (!str) return void (0);

    var fn_body_idx = str.indexOf('{'),
        fn_body = str.substring(fn_body_idx + 1, str.lastIndexOf('}')),
        fn_declare = str.substring(0, fn_body_idx),
        fn_params = fn_declare.substring(fn_declare.indexOf('(') + 1, fn_declare.lastIndexOf(')')),
        args = fn_params.split(',');

    args.push(fn_body);

    function Fn() {
        return Function.apply(this, args);
    }

    Fn.prototype = Function.prototype;

    return new Fn();
}

window.onload = function () {
    var configObject = JSON.parse('{"urls":[{"url":"/swagger/v1/swagger.json","name":"Qa API"}],"deepLinking":false,"persistAuthorization":false,"displayOperationId":false,"defaultModelsExpandDepth":1,"defaultModelExpandDepth":1,"defaultModelRendering":"example","displayRequestDuration":false,"docExpansion":"list","showExtensions":false,"showCommonExtensions":false,"supportedSubmitMethods":["get","put","post","delete","options","head","patch","trace"],"tryItOutEnabled":false,"oidcSupportedFlows":["authorization_code"],"oidcSupportedScopes":["Qa"],"oidcDiscoveryEndpoint":"https://localhost:44303/.well-known/openid-configuration"}');
    var oauthConfigObject = JSON.parse('{"clientId":"Qa_Swagger","scopeSeparator":" ","scopes":[],"useBasicAuthenticationWithAccessCodeGrant":false,"usePkceWithAuthorizationCodeGrant":false}');

    // Workaround for https://github.com/swagger-api/swagger-ui/issues/5945
    configObject.urls.forEach(function (item) {
        if (item.url.startsWith("http") || item.url.startsWith("/")) return;
        item.url = window.location.href.replace("index.html", item.url).split('#')[0];
    });

    // If validatorUrl is not explicitly provided, disable the feature by setting to null
    if (!configObject.hasOwnProperty("validatorUrl"))
        configObject.validatorUrl = null

    // If oauth2RedirectUrl isn't specified, use the built-in default
    if (!configObject.hasOwnProperty("oauth2RedirectUrl"))
        configObject.oauth2RedirectUrl = (new URL("oauth2-redirect.html", window.location.href)).href;

    // Apply mandatory parameters
    configObject.dom_id = "#swagger-ui";
    configObject.presets = [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset];
    configObject.layout = "StandaloneLayout";

    // Parse and add interceptor functions
    var interceptors = JSON.parse('{}');
    if (interceptors.RequestInterceptorFunction)
        configObject.requestInterceptor = parseFunction(interceptors.RequestInterceptorFunction);
    if (interceptors.ResponseInterceptorFunction)
        configObject.responseInterceptor = parseFunction(interceptors.ResponseInterceptorFunction);

    if (configObject.plugins) {
        configObject.plugins = configObject.plugins.map(eval);
    }

    // Begin Swagger UI call region

    const ui = abp.SwaggerUIBundle(configObject);

    ui.initOAuth(oauthConfigObject);

    // End Swagger UI call region

    window.ui = ui
}
app.UseSwagger();
var resolver = app.ApplicationServices.GetService<ISwaggerHtmlResolver>();

 app.UseSwaggerUI(options =>
{
    options.InjectJavascript("ui/abp.js");
    
    options.InjectJavascript("ui/abp.swagger.js");
    options.IndexStream = () => resolver?.Resolver();
    options.SwaggerEndpoint("/swagger/v1/swagger.json", "Qa API");

    var configuration = context.ServiceProvider.GetRequiredService<IConfiguration>();
    options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
});

Yes,

Hi,

you can use event handler:

https://abp.io/docs/latest/framework/infrastructure/event-bus/local#pre-built-events https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed#pre-defined-events

Try this

protected override void ApplyAbpConceptsForDeletedEntity(EntityEntry entry)
{
    if (!(entry.Entity is ISoftDelete))
    {
        return;
    }

    if (IsHardDeleted(entry))
    {
        return;
    }

    if (entry.CurrentValues.Properties.Any(x => x.Name == nameof(IHasExtraProperties.ExtraProperties)))
    {
        ExtraPropertyDictionary? originalExtraProperties = null;
        if (entry.Entity is IHasExtraProperties)
        {
            originalExtraProperties = entry.OriginalValues.GetValue<ExtraPropertyDictionary>(nameof(IHasExtraProperties.ExtraProperties));
        }

        ;

        if (entry.Entity is IHasExtraProperties)
        {
            ObjectHelper.TrySetProperty(entry.Entity.As<IHasExtraProperties>(), x => x.ExtraProperties, () => originalExtraProperties);
        }
    }
    
    entry.Reload()
    ObjectHelper.TrySetProperty(entry.Entity.As<ISoftDelete>(), x => x.IsDeleted, () => true);
    SetDeletionAuditProperties(entry);
}

if you published it locally, will it work?

Showing 581 to 590 of 6693 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.1.0-preview. Updated on November 07, 2025, 08:20