ASP.NET Core Razor Page anchor tag not working inside an Area










0















I have a set of razor pages at the usual location for an ASP.NET Core project...



/Pages/Index.cshtml
/Pages/About.cshtml
...etc...


They use the usual shared layout file for providing the header and footer content for each page...



/Pages/Shared/_Layout.cshtml


Inside the _Layout.cshtml I have anchor tags in the header and footer sections of the page for going back to the index page, like this...



<a asp-page="About">About</a>


...which generates an actual href of 'http://localhost/About'. This is correct and works just fine. I have since added more razor pages inside an area, like this...



/Areas/Account/Pages/Settings/UserSettings.cshtml


I want the same header and footer display for the Account area pages as for my main pages and so I have set the view start file...



/Areas/Account/_ViewStart.cshtml


...to use the already existing layout, like this...



@
Layout = "/Pages/Shared/_Layout.cshtml";



...and sure enough, my UserSettings page now renders the header and footer for the page as expected. With appropriate images and text.



Except for one problem. The anchor tags are not generating the correct href for any razor page inside the Account area. Instead of generating...



href="http://localhost/About" 


...it is generating...



href="http://localhost/Account/Settings/UserSettings" 


I believe it is generating a default href for the UserSettings page.



Any ideas?










share|improve this question






















  • Have you enabled areas for Razor Pages?

    – DavidG
    Nov 15 '18 at 23:35











  • I believe so, I have 'services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);' set inside ConfigureServices

    – Phil Wright
    Nov 16 '18 at 0:35
















0















I have a set of razor pages at the usual location for an ASP.NET Core project...



/Pages/Index.cshtml
/Pages/About.cshtml
...etc...


They use the usual shared layout file for providing the header and footer content for each page...



/Pages/Shared/_Layout.cshtml


Inside the _Layout.cshtml I have anchor tags in the header and footer sections of the page for going back to the index page, like this...



<a asp-page="About">About</a>


...which generates an actual href of 'http://localhost/About'. This is correct and works just fine. I have since added more razor pages inside an area, like this...



/Areas/Account/Pages/Settings/UserSettings.cshtml


I want the same header and footer display for the Account area pages as for my main pages and so I have set the view start file...



/Areas/Account/_ViewStart.cshtml


...to use the already existing layout, like this...



@
Layout = "/Pages/Shared/_Layout.cshtml";



...and sure enough, my UserSettings page now renders the header and footer for the page as expected. With appropriate images and text.



Except for one problem. The anchor tags are not generating the correct href for any razor page inside the Account area. Instead of generating...



href="http://localhost/About" 


...it is generating...



href="http://localhost/Account/Settings/UserSettings" 


I believe it is generating a default href for the UserSettings page.



Any ideas?










share|improve this question






















  • Have you enabled areas for Razor Pages?

    – DavidG
    Nov 15 '18 at 23:35











  • I believe so, I have 'services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);' set inside ConfigureServices

    – Phil Wright
    Nov 16 '18 at 0:35














0












0








0








I have a set of razor pages at the usual location for an ASP.NET Core project...



/Pages/Index.cshtml
/Pages/About.cshtml
...etc...


They use the usual shared layout file for providing the header and footer content for each page...



/Pages/Shared/_Layout.cshtml


Inside the _Layout.cshtml I have anchor tags in the header and footer sections of the page for going back to the index page, like this...



<a asp-page="About">About</a>


...which generates an actual href of 'http://localhost/About'. This is correct and works just fine. I have since added more razor pages inside an area, like this...



/Areas/Account/Pages/Settings/UserSettings.cshtml


I want the same header and footer display for the Account area pages as for my main pages and so I have set the view start file...



/Areas/Account/_ViewStart.cshtml


...to use the already existing layout, like this...



@
Layout = "/Pages/Shared/_Layout.cshtml";



...and sure enough, my UserSettings page now renders the header and footer for the page as expected. With appropriate images and text.



Except for one problem. The anchor tags are not generating the correct href for any razor page inside the Account area. Instead of generating...



href="http://localhost/About" 


...it is generating...



href="http://localhost/Account/Settings/UserSettings" 


I believe it is generating a default href for the UserSettings page.



Any ideas?










share|improve this question














I have a set of razor pages at the usual location for an ASP.NET Core project...



/Pages/Index.cshtml
/Pages/About.cshtml
...etc...


They use the usual shared layout file for providing the header and footer content for each page...



/Pages/Shared/_Layout.cshtml


Inside the _Layout.cshtml I have anchor tags in the header and footer sections of the page for going back to the index page, like this...



<a asp-page="About">About</a>


...which generates an actual href of 'http://localhost/About'. This is correct and works just fine. I have since added more razor pages inside an area, like this...



/Areas/Account/Pages/Settings/UserSettings.cshtml


I want the same header and footer display for the Account area pages as for my main pages and so I have set the view start file...



/Areas/Account/_ViewStart.cshtml


...to use the already existing layout, like this...



@
Layout = "/Pages/Shared/_Layout.cshtml";



...and sure enough, my UserSettings page now renders the header and footer for the page as expected. With appropriate images and text.



Except for one problem. The anchor tags are not generating the correct href for any razor page inside the Account area. Instead of generating...



href="http://localhost/About" 


...it is generating...



href="http://localhost/Account/Settings/UserSettings" 


I believe it is generating a default href for the UserSettings page.



Any ideas?







c# asp.net-core razor-pages






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 15 '18 at 22:44









Phil WrightPhil Wright

17.5k1270122




17.5k1270122












  • Have you enabled areas for Razor Pages?

    – DavidG
    Nov 15 '18 at 23:35











  • I believe so, I have 'services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);' set inside ConfigureServices

    – Phil Wright
    Nov 16 '18 at 0:35


















  • Have you enabled areas for Razor Pages?

    – DavidG
    Nov 15 '18 at 23:35











  • I believe so, I have 'services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);' set inside ConfigureServices

    – Phil Wright
    Nov 16 '18 at 0:35

















Have you enabled areas for Razor Pages?

– DavidG
Nov 15 '18 at 23:35





Have you enabled areas for Razor Pages?

– DavidG
Nov 15 '18 at 23:35













I believe so, I have 'services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);' set inside ConfigureServices

– Phil Wright
Nov 16 '18 at 0:35






I believe so, I have 'services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);' set inside ConfigureServices

– Phil Wright
Nov 16 '18 at 0:35













1 Answer
1






active

oldest

votes


















3














I find that you need to change



<a asp-page="About">About</a>


to



<a asp-page="/About">About</a>


is
Escape character and / is the Separator.You won't direct correctly in area if you use asp-page="About".






share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53328921%2fasp-net-core-razor-page-anchor-tag-not-working-inside-an-area%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    I find that you need to change



    <a asp-page="About">About</a>


    to



    <a asp-page="/About">About</a>


    is
    Escape character and / is the Separator.You won't direct correctly in area if you use asp-page="About".






    share|improve this answer



























      3














      I find that you need to change



      <a asp-page="About">About</a>


      to



      <a asp-page="/About">About</a>


      is
      Escape character and / is the Separator.You won't direct correctly in area if you use asp-page="About".






      share|improve this answer

























        3












        3








        3







        I find that you need to change



        <a asp-page="About">About</a>


        to



        <a asp-page="/About">About</a>


        is
        Escape character and / is the Separator.You won't direct correctly in area if you use asp-page="About".






        share|improve this answer













        I find that you need to change



        <a asp-page="About">About</a>


        to



        <a asp-page="/About">About</a>


        is
        Escape character and / is the Separator.You won't direct correctly in area if you use asp-page="About".







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 16 '18 at 6:34









        Xing ZouXing Zou

        76716




        76716





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53328921%2fasp-net-core-razor-page-anchor-tag-not-working-inside-an-area%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Top Tejano songwriter Luis Silva dead of heart attack at 64

            ReactJS Fetched API data displays live - need Data displayed static

            Evgeni Malkin