Open Closed

Book sample code did not work #10208


User avatar
0
abmag created

Used abp cli to create mvc app including Books sample code.

Expected: book page (for example https://localhost:44392/Books) to have a working "New book" button

Observed: "New book" button did not work

Note: may work on Windows but not on Linux

To reproduce see:

https://github.com/magentuseu/abp-tests


6 Answer(s)
  • User Avatar
    0
    AI-Bot created
    Support Team ABP Agent
    1. Solution
    • Root cause: In the MVC Book Store sample, the New Book button uses ABP’s ModalManager and generated JavaScript proxies. If the global proxy namespace isn’t initialized on the page, clicking “New book” won’t do anything. On some setups (often Linux or when script order/bundling differs), the proxy object path can be undefined, so the button appears but the click handler silently fails.

    • Quick fix in Pages/Books/Index.js:

      • Locate the line initializing the service proxy. It typically looks like: var bookService = bookStore.books.book;
      • Change it to use the correct global namespace that ABP emits: var bookService = window.myBookStore.books.book;
    • Ensure the page includes the generated JS proxies before Index.js:

      • In Pages/Books/Index.cshtml, verify the scripts section: @section scripts { <abp-script src="/Abp/ApplicationConfigurationScript" /> <abp-script src="/AbpServiceProxies.js" /> <abp-script src="/Pages/Books/Index.js" /> } This guarantees the proxies and application configuration are loaded before your Index.js.
    • Verify bundling isn’t stripping or reordering required scripts:

      • If you customized bundling, ensure Volo.Abp.AspNetCore.Mvc.UI.Bundling includes AbpServiceProxies.js (either via default bundles or your bundle contributors) and that Index.js is loaded after it.
    • Double-check the selector and click handler wiring:

      • The button ID in Index.cshtml must match the code: <abp-button id="NewBookButton" ... />
      • In Index.js: $('#NewBookButton').click(function (e) { e.preventDefault(); createModal.open(); });
    • If the modal still doesn’t open:

      • Confirm the modal pages exist and are routable: new abp.ModalManager(abp.appPath + 'Books/CreateModal'); new abp.ModalManager(abp.appPath + 'Books/EditModal'); Ensure Pages/Books/CreateModal.cshtml and EditModal.cshtml are present and the Razor page routes match (no folder/area mismatch).
      • Check permissions: the button is often wrapped with permission checks. Make sure the current user has BookStore.Books.Create.
    • Note on OS differences (Linux vs Windows):

      • File name case sensitivity: On Linux, file paths are case-sensitive. Ensure the script and page file names and paths referenced in code exactly match their casing on disk (e.g., Index.js vs index.js; Books/CreateModal vs books/createmodal).
    1. Sources
    • ABP GitHub issue/workaround that matches the undefined proxy namespace problem on generated MVC CRUD (fix by using window.myBookStore.books.book):
      • https://github.com/abpframework/abp
    • Repro repository you shared:
      • https://github.com/magentuseu/abp-tests

    This response was generated by AI. If it didn’t solve your problem, feel free to post a new answer — our support team will jump in to help you soon.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Can you zip your project and share with liming.ma@volosoft.com

    I will check it.

    Thanks

  • User Avatar
    0
    abmag created

    See https://github.com/magentuseu/abp-tests ready and reproducing the problem.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Please make this repository PRIVATE, it contains your API KEY.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    Can I use the mvc_no_saas project reproduce the problem?

    Thanks.

  • User Avatar
    0
    abmag created

    use the mvc_no_saas project to reproduce the problem use the devcontainer as the problem may be related to Linux only

    Please also modify gitignore in "abp new" not to publish api key.

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 December 10, 2025, 12:02
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.