diff --git a/docs/en/framework/ui/mvc-razor-pages/modals.md b/docs/en/framework/ui/mvc-razor-pages/modals.md index d37575cc26..6ad7ad421b 100644 --- a/docs/en/framework/ui/mvc-razor-pages/modals.md +++ b/docs/en/framework/ui/mvc-razor-pages/modals.md @@ -207,7 +207,7 @@ namespace MyProject.Web.Pages.Products public class ProductCreateModalModel : AbpPageModel { [BindProperty] - public PoductCreationDto Product { get; set; } + public ProductCreationDto Product { get; set; } public async Task OnGetAsync() { @@ -227,9 +227,9 @@ namespace MyProject.Web.Pages.Products * This is a simple `PageModal` class. The `[BindProperty]` make the form binding to the model when you post (submit) the form; The standard ASP.NET Core system. * `OnPostAsync` returns `NoContent` (this method is defined by the base `AbpPageModel` class). Because we don't need to a return value in the client side, after the form post operation. -**PoductCreationDto:** +**ProductCreationDto:** -`ProductCreateModalModel` uses a `PoductCreationDto` class defined as shown below: +`ProductCreateModalModel` uses a `ProductCreationDto` class defined as shown below: ````csharp using System; @@ -238,7 +238,7 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; namespace MyProject.Web.Pages.Products { - public class PoductCreationDto + public class ProductCreationDto { [Required] [StringLength(128)] diff --git a/docs/en/framework/ui/mvc-razor-pages/tag-helpers/index.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/index.md index d986d65b43..e0be666b2c 100644 --- a/docs/en/framework/ui/mvc-razor-pages/tag-helpers/index.md +++ b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/index.md @@ -7,7 +7,7 @@ # ABP Tag Helpers -ABP defines a set of **tag helper components** to simply the user interface development for ASP.NET Core (MVC / Razor Pages) applications. +ABP defines a set of **tag helper components** to simplify the user interface development for ASP.NET Core (MVC / Razor Pages) applications. ## Bootstrap Component Wrappers @@ -45,7 +45,7 @@ Here, the list of components those are wrapped by the ABP: ## Form Elements -**Abp Tag Helpers** add new features to standard **Asp.Net Core MVC input & select Tag Helpers** and wrap them with **Bootstrap** form controls. See [Form Elements documentation](form-elements.md) . +**Abp Tag Helpers** add new features to standard **ASP.NET Core MVC input & select Tag Helpers** and wrap them with **Bootstrap** form controls. See [Form Elements documentation](form-elements.md) . ## Dynamic Forms diff --git a/docs/en/framework/ui/mvc-razor-pages/theming.md b/docs/en/framework/ui/mvc-razor-pages/theming.md index ff73b3ad1b..138b52e3d2 100644 --- a/docs/en/framework/ui/mvc-razor-pages/theming.md +++ b/docs/en/framework/ui/mvc-razor-pages/theming.md @@ -437,7 +437,7 @@ In this way, applications or modules can have selectors based on the current lay ### RTL -To support Right-To-Left languages, the Layout should check the current culture and add `dir="rtl"` to the `html` tag and `rtl` CSS class the the `body` tag. +To support Right-To-Left languages, the Layout should check the current culture and add `dir="rtl"` to the `html` tag and `rtl` CSS class to the `body` tag. You can check `CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft` to understand if the current language is a RTL language. diff --git a/docs/en/framework/ui/mvc-razor-pages/widgets.md b/docs/en/framework/ui/mvc-razor-pages/widgets.md index ac9901733b..7e894027f6 100644 --- a/docs/en/framework/ui/mvc-razor-pages/widgets.md +++ b/docs/en/framework/ui/mvc-razor-pages/widgets.md @@ -42,7 +42,7 @@ namespace DashboardDemo.Web.Pages.Components.MySimpleWidget Inheriting from `AbpViewComponent` is not required. You could inherit from ASP.NET Core's standard `ViewComponent`. `AbpViewComponent` only defines some base useful properties. -You can inject a service and use in the `Invoke` method to get some data from the service. You may need to make Invoke method async, like `public async Task InvokeAsync()`. See [ASP.NET Core's ViewComponents](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components) document fore all different usages. +You can inject a service and use in the `Invoke` method to get some data from the service. You may need to make Invoke method async, like `public async Task InvokeAsync()`. See [ASP.NET Core's ViewComponents](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components) document for all different usages. **Default.cshtml**: diff --git a/docs/en/get-started/layered-web-application.md b/docs/en/get-started/layered-web-application.md index b2bd05454a..f4a383ff0b 100644 --- a/docs/en/get-started/layered-web-application.md +++ b/docs/en/get-started/layered-web-application.md @@ -142,11 +142,11 @@ In this step, you can choose which languages your application will support. * Click Add Custom Language if you want to add a language that is not listed. -You can change these settings later if needed. Thenk click the *Next* button for the *Additional Options* page: +You can change these settings later if needed. Then click the *Next* button for the *Additional Options* page: ![abp-studio-new-solution-dialog-additional-options](images/abp-studio-new-solution-dialog-additional-options_dark.png) -If you uncheck the *Kubernetes Configuration* option, the solution will not include the Kubernetes configuration files, such as Helm charts and other Kubernetes-related files. You can also specify *Social Logins*; if you uncheck this option, the solution will not be configured for social login. Lastly, you can specify the *Include Tests* option to include or exclude the test projects from the solution. +If you uncheck the *Kubernetes Configuration* option, the solution will not include the Kubernetes configuration files, which includes the Helm charts and other Kubernetes-related files. You can also specify *Social Logins*; if you uncheck this option, the solution will not be configured for social login. Lastly, you can specify the *Include Tests* option to include or exclude the test projects from the solution. On the next screen, you can configure the modularity options for your solution: diff --git a/docs/en/get-started/microservice.md b/docs/en/get-started/microservice.md index ee7e31bf85..56f275c258 100644 --- a/docs/en/get-started/microservice.md +++ b/docs/en/get-started/microservice.md @@ -118,7 +118,7 @@ Click the Next button to see *Additional Options* selection: ![abp-studio-new-solution-dialog-additional-options](images/abp-studio-new-solution-dialog-additional-options-microservice.png) -If you unchecked the *Kubernetes Configuration* option, the solution will not include the Kubernetes configuration files which include the Helm charts and other Kubernetes related files. You can also specify *Social Logins*; if you uncheck this option, the solution will not be configured for social login. Lastly, you can specify the *Include Tests* option to include the test projects in the solution. +If you unchecked the *Kubernetes Configuration* option, the solution will not include the Kubernetes configuration files which includes the Helm charts and other Kubernetes-related files. You can also specify *Social Logins*; if you uncheck this option, the solution will not be configured for social login. Lastly, you can specify the *Include Tests* option to include the test projects in the solution. Click the Next button to see *Additional Services* screen: @@ -297,7 +297,7 @@ Clicking the *Connect* button will start a process that establishes the VPN conn ![abp-studio-microservice-kubernetes-services](images/abp-studio-microservice-kubernetes-services.png) -Now, you can access all the services inside the Kubernetes cluster, including the services those are not exposed out of the cluster. You can use the service name as DNS. For example, you can directly visit `http://cloudcrm-local-identity` in your Browser. You can also right-click to a service or application and select the Browse command to open it's UI in the built-in browser of ABP Studio: +Now, you can access all the services inside the Kubernetes cluster, including the services those are not exposed out of the cluster. You can use the service name as DNS. For example, you can directly visit `http://cloudcrm-local-identity` in your Browser. You can also right-click to a service or application and select the Browse command to open its UI in the built-in browser of ABP Studio: ![abp-studio-microservice-kubernetes-services-browse](images/abp-studio-microservice-kubernetes-services-browse.png) diff --git a/docs/en/get-started/pre-requirements.md b/docs/en/get-started/pre-requirements.md index 8aad4818ab..e17b9cd227 100644 --- a/docs/en/get-started/pre-requirements.md +++ b/docs/en/get-started/pre-requirements.md @@ -36,7 +36,7 @@ Visual Studio Code is a **free and cross-platform** lightweight code editor that ## .NET SDK -ABP is based on NET, so you need to install the .NET SDK. You can download the .NET SDK from the [.NET official website](https://dotnet.microsoft.com/en-us/download/dotnet/9.0). +ABP is based on .NET, so you need to install the .NET SDK. You can download the .NET SDK from the [.NET official website](https://dotnet.microsoft.com/en-us/download/dotnet/9.0). > Installing Visual Studio or JetBrains Rider may automatically install the .NET SDK. @@ -56,7 +56,7 @@ dotnet tool update --global dotnet-ef ## Node.js -ABP projects include some frontend resource packages, so you need to install Node.js/NPM manage these resource packages. You can download Node.js from the [official Node.js website](https://nodejs.org/). We recommend installing version v20.11+. +ABP projects include some frontend resource packages, so you need to install Node.js/NPM to manage these resource packages. You can download Node.js from the [official Node.js website](https://nodejs.org/). We recommend installing version v20.11+. ## Yarn (Required Only for Angular Projects) @@ -89,7 +89,7 @@ ABP startup solution templates and tools use some PowerShell scripts (`*.ps1`) t * [Install PowerShell on macOS](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos) * [Install PowerShell on Linux](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux) -## MicroService Solution +## Microservice Solution The following tools are only required to develop ABP's [microservice solution](../solution-templates/microservice/index.md) diff --git a/docs/en/get-started/single-layer-web-application.md b/docs/en/get-started/single-layer-web-application.md index 9ee87fd439..ef657722b0 100644 --- a/docs/en/get-started/single-layer-web-application.md +++ b/docs/en/get-started/single-layer-web-application.md @@ -66,7 +66,7 @@ Once your configuration is done, click the *Next* button to navigate to the *UI Here, you see all the possible UI options supported by that startup solution template. Pick the **{{ UI_Value }}**. -Notice that; Once you select a UI type, some additional options will be available under the UI Framework list. You can further configure the options or leave them as default and click the Next button for the *Database Provider* selection screen: +Notice that: Once you select a UI type, some additional options will be available under the UI Framework list. You can further configure the options or leave them as default and click the Next button for the *Database Provider* selection screen: {{ if DB == "EF" }} ![abp-studio-new-solution-dialog-database-provider](images/abp-studio-no-layers-new-solution-dialog-database-provider-efcore_dark.png) @@ -110,7 +110,7 @@ In this step, you can choose which languages your application will support. * Click Add Custom Language if you want to add a language that is not listed. -You can change these settings later if needed. Thenk click the *Next* button for the *Additional Options* page: +You can change these settings later if needed. Then click the *Next* button for the *Additional Options* page: ![abp-studio-no-layers-new-solution-additional-options](images/abp-studio-no-layers-new-solution-additional-options_dark.png) diff --git a/docs/en/testing/integration-tests.md b/docs/en/testing/integration-tests.md index c87d270747..d28ed5ca5b 100644 --- a/docs/en/testing/integration-tests.md +++ b/docs/en/testing/integration-tests.md @@ -34,13 +34,13 @@ The startup template is configured to use **in-memory SQLite** database for the Using in-memory SQLite database has two main advantages; * It is faster compared to an external DBMS. -* It create a **new fresh database** for each test case, so tests doesn't affect each other. +* It creates a **new fresh database** for each test case, so tests don't affect each other. > **Tip**: Do not use EF Core's In-Memory database for advanced integration tests. It is not a real DBMS and has many differences in details. For example, it doesn't support transaction and rollback scenarios, so you can't truly test the failing scenarios. On the other hand, In-Memory SQLite is a real DBMS and supports the fundamental SQL database features. ## The Seed Data -Writing tests against an empty database is not practical. In most cases, you need to some initial data in the database. For example, if you write a test class that query, update and delete the products, it would be helpful to have a few products in the database before executing the test case. +Writing tests against an empty database is not practical. In most cases, you need some initial data in the database. For example, if you write a test class that queries, updates and deletes the products, it would be helpful to have a few products in the database before executing the test case. ABP's [Data Seeding](../framework/infrastructure/data-seeding.md) system is a powerful way to seed the initial data. The application startup template has a *YourProject*TestDataSeedContributor class in the `.TestBase` project. You can fill it to have an initial data that you can use for each test method. @@ -401,7 +401,7 @@ public class EfCoreIssueAppService_Tests : IssueAppService_Tests By deriving from the related abstract classes, now we can see the all tests in the test explorers and run them. +> By deriving from the related abstract classes, now we can see all the tests in the test explorers and run them. ![unitest-efcore-mongodb](../images/unitest-efcore-mongodb.png) diff --git a/docs/en/testing/overall.md b/docs/en/testing/overall.md index 154c169d5b..15e9abf725 100644 --- a/docs/en/testing/overall.md +++ b/docs/en/testing/overall.md @@ -69,7 +69,7 @@ The startup solution has the following libraries already installed; * [NSubstitute](https://nsubstitute.github.io/) as the mocking library. * [Shouldly](https://github.com/shouldly/shouldly) as the assertion library. -While you are free to replace them with your favorite tools, this document and examples will be base on these tooling. +While you are free to replace them with your favorite tools, this document and examples will be based on these tooling. ## The Test Explorer diff --git a/docs/en/testing/unit-tests.md b/docs/en/testing/unit-tests.md index cfc63a4848..2e06a44efb 100644 --- a/docs/en/testing/unit-tests.md +++ b/docs/en/testing/unit-tests.md @@ -73,7 +73,7 @@ namespace MyProject.Issues Notice that the `IsClosed` and `CloseDate` properties have private setters to force some business rules by using the `Open()` and `Close()` methods: -* Whenever you close an issue, the `CloseDate` should be set to the [current time](../framework/infrastructure/virtual-file-system.md). +* Whenever you close an issue, the `CloseDate` should be set to the current time. * An issue can not be re-opened if it is locked. And if it is re-opened, the `CloseDate` should be set to `null`. Since the `Issue` entity is a part of the Domain Layer, we should test it in the `Domain.Tests` project. Create an `Issue_Tests` class inside the `Domain.Tests` project: @@ -160,7 +160,7 @@ public void Should_Not_Allow_To_ReOpen_A_Locked_Issue() `Assert.Throws` checks if the executed code throws a matching exception. -> See the [xUnit](https://xunit.net/#documentation) & [Shoudly](https://docs.shouldly.org/) documentation to learn more about these libraries. +> See the [xUnit](https://xunit.net/#documentation) & [Shouldly](https://docs.shouldly.org/) documentation to learn more about these libraries. ## Classes With Dependencies