首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由不解析MatBlazor按钮链接

路由不解析MatBlazor按钮链接
EN

Stack Overflow用户
提问于 2019-11-27 10:09:48
回答 2查看 590关注 0票数 2

我正在为我的网站使用MatBlazor,并且我已经使用这个伟大的博客:服务器端Blazor中的Google认证实现了谷歌身份验证

我希望在我的MatAppBar中有一个登录按钮(MatAppBar)。

原始代码有一个链接:<a class="ml-md-auto btn btn-primary" href="/Login" target="_top">Login</a>

这个链接有效。我被重定向到我的OnGetAsync of my LoginModel。但它不符合我的UI风格。

这个按钮会转到正确的页面,但是我的OnGetAsync of my LoginModel不会被触发,只显示默认的Sorry, there's nothing at this address.

<MatButton Class="mat" Outlined="true" Icon="Google" Label="Inloggen" Link="/Login"></MatButton>

我想我需要调整我的路线,但找不到办法。

更新

我的Login.cshtml.cs:

代码语言:javascript
复制
[AllowAnonymous]
public class LoginModel : PageModel
{
    public IActionResult OnGetAsync(string returnUrl = null)
    {
        string provider = "Google";
        // Request a redirect to the external login provider.
        var authenticationProperties = new AuthenticationProperties
        {
            RedirectUri = Url.Page("./Login",
            pageHandler: "Callback",
            values: new { returnUrl }),
        };
        return new ChallengeResult(provider, authenticationProperties);
    }
}

我的Startup.cs:

代码语言:javascript
复制
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseCookiePolicy();
        app.UseAuthentication();
        app.UseAuthorization();

        app.UseEmbeddedBlazorContent(typeof(MatBlazor.BaseMatComponent).Assembly);

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-11 23:27:48

我有一个非常类似的问题,我使用了上面列出的导航管理器选项,但是必须将ForceLoad参数传递为"true“。

代码语言:javascript
复制
 void LoginClick()
            {
                navigationManager.NavigateTo("/login",true);
            }
票数 1
EN

Stack Overflow用户

发布于 2019-11-28 07:11:44

使用完整的URL

代码语言:javascript
复制
<MatButton Class="mat" Outlined="true" Icon="Google" Label="Inloggen"
 Link="BaseUrl/Login"></MatButton>

或者使用导航管理器导航该页面。

代码语言:javascript
复制
@inject NavigationManager navigationmanager
    <MatButton Class="mat" Outlined="true" Icon="Google" Label="Inloggen" Onclick="@(()=>)"></MatButton>
    code{
void clic()
{
navigationmanager.Navigateto("/Login")
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59067712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档