Asp.net 如何在导航栏中插入模式登录表单

Asp.net 如何在导航栏中插入模式登录表单,asp.net,razor,asp.net-core,razor-pages,asp.net-core-2.2,Asp.net,Razor,Asp.net Core,Razor Pages,Asp.net Core 2.2,我正在建立一个新的网站,其中一个要求是让登录表单成为一个模式窗口 我试图将其包含在顶部导航栏中,并且仅当用户未登录时才会呈现 如果我删除模型并让一个空的模式运行,那么一切都会很好,但是当我再次添加它时,它就不起作用了,因为在本例中,索引页面的模式与模式登录页面的模式不同 如何在顶部导航栏内的模型上添加此模式窗口?还有其他选择吗 另外,我正在使用Razor页面和ASP.NETCore2.2 谢谢 您需要使用视图组件: public class LoginViewComponent : ViewCo

我正在建立一个新的网站,其中一个要求是让登录表单成为一个模式窗口

我试图将其包含在顶部导航栏中,并且仅当用户未登录时才会呈现

如果我删除模型并让一个空的模式运行,那么一切都会很好,但是当我再次添加它时,它就不起作用了,因为在本例中,索引页面的模式与模式登录页面的模式不同

如何在顶部导航栏内的模型上添加此模式窗口?还有其他选择吗

另外,我正在使用Razor页面和ASP.NETCore2.2


谢谢

您需要使用视图组件:

public class LoginViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync()
    {
        var model = await GetModelAsync();
        return View(model);
    }

    public Task<LoginViewModel> GetModelAsync() =>
        Task.FromResult(new LoginViewModel());
}
您需要一个可以响应表单帖子的页面或处理程序。不能发布到视图组件;这只是以一种可以插入的自包含方式使用自己的模型渲染局部视图。您的登录表单中应该有一个隐藏输入,用于返回URL,您将使用Request.Path填充该URL。然后,成功登录后,将用户重定向回此URL。这样,登录将是无缝的,就好像他们从来没有让自己的页面


失败时,您应该像往常一样重新显示登录表单。将其作为视图返回更容易、更无缝。因此,您可以借助登录页面的内置post处理程序。同样,只需添加您的返回URL字段,并用请求中的返回URL填充它,这样用户最终将在开始登录过程时返回到最初所在的页面。

谢谢您的回答!在一个只使用剃须刀页面的项目中,有没有可能做到这一点呢。
@await Component.InvokeAsync("Login")