从共享布局作为局部视图或视图组件登录

时间:2019-06-10 10:44:14

标签: c# asp.net-core model-view-controller

我在共享布局标题中放置了一个登录选项。目标是用户单击登录填充凭据并单击按钮,信息将保存在会话中,页面将刷新,并且将显示登录用户的图标,而不是登录。

我已将登录表单和个人资料图标的HTML /剃刀代码放在单独的文本文件中。并使用此代码创建部分视图

<ul class="auth__nav">
@Html.Raw(ViewBag.FormToShow)

部分视图加载我想检查我的会话变量是否具有值,然后获取配置文件文件代码或其他登录表单代码,但是未调用此操作

public PartialViewResult _SignIn()
    {
        string vFormtoShow = string.Empty;
        if (!string.IsNullOrEmpty(HttpContext.Session.GetString("Username")))
        {
            vFormtoShow = System.IO.File.ReadAllText("LogOutForm.txt");
        }
        else vFormtoShow = System.IO.File.ReadAllText("SignInForm.txt");

        ViewBag.FormToShow = vFormtoShow;

        return PartialView();
    }

1 个答案:

答案 0 :(得分:0)

您可以使用(嵌套的)部分内容代替使用.txt文件。

您可以在_LogOutForm.cshtml中拥有一个_SignInForm.cshtml文件和一个Views/Shared文件。

然后,您将在同一文件夹中有一个_UserAuth.cshtml部分:

@if (!string.IsNullOrEmpty(HttpContext.Session.GetString("Username"))) 
{
    <partial name="_LogOutForm"/>
}
else
{
    <partial name="_SignInForm"/>
}

<partial>标签助手通过其名称(不带扩展名)呈现部分视图。

我建议您尝试ASP.NET Core Identity,这是一个用于用户和身份验证的功能完善的库。