为不同的用户类型创建不同的布局

时间:2018-02-28 01:18:10

标签: c# asp.net asp.net-mvc

作为背景,我目前正在创建一个学生数据库。我正在处理它的登录页面部分。截至目前,我可以通过下拉列表显示不同的用户类型,并让用户输入他们的用户名和密码。我能够使用正确的凭据成功登录用户,并将它们重定向到_ViewStart.csthml下的默认布局。我的问题是,我不完全确定如何将它们重定向到不同的页面。在下面的代码中,我正在考虑检查用户选择的用户类型,并为每个用户类型创建单独的布局。

    Calendar cal = Calendar.getInstance();

    final int minutes = cal.get(Calendar.MINUTE);
    cal.set (Calendar.MINUTE, minutes - (minutes % 15));
    cal.set (Calendar.SECOND, 0);
    cal.set (Calendar.MILLISECOND, 0);

    System.out.println (new Date(cal.getTimeInMillis()));

在_ViewStart.cshtml下,我通过在Views文件夹的根目录中使用_ViewStart文件来控制Layouts渲染。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;


namespace LoginQuery
{
    public partial class Login : System.Web.UI.Page
    {
        SqlCommand cmd = new SqlCommand();
        SqlConnection con = new SqlConnection();
        SqlDataAdapter sda = new SqlDataAdapter();
        DataSet ds = new DataSet();
        protected void Page_Load(object sender, EventArgs e)
        {
            con.ConnectionString = "Data Source=CHRIS\\SQLEXPRESS;Initial Catalog=FPSDD;Integrated Security=True";
            con.Open();
        }

        protected void BtnLogin_Click(object sender, EventArgs e)
        {
            cmd.CommandText = "SELECT PersonType FROM Person where Username='" + txtUsername.Text + "' and Password='" + txtPassword.Text + "' and PersonType='" + userType.SelectedValue + "'";
            cmd.Connection = con;
            sda.SelectCommand = cmd;
            sda.Fill(ds, "Person");
            if (ds.Tables[0].Rows.Count > 0)
            {
                if (userType.SelectedValue == "Student")
                {
                    Response.Redirect("");
                }
                else if (userType.SelectedValue == "Instructor")
                {
                    Response.Redirect("");
                }
                else if (userType.SelectedValue == "Counselor")
                {
                    Response.Redirect("");
                }
                else if (userType.SelectedValue == "Parent")
                {
                    Response.Redirect("");
                }
                else if (userType.SelectedValue == "Principal")
                {
                    Response.Redirect("");
                }
                else if (userType.SelectedValue == "Admin")
                {
                    Response.Redirect("");
                }
                else if (userType.SelectedValue == "Counselor")
                {
                    Response.Redirect("");
                }
                else if (userType.SelectedValue == "Instructor")
                {
                    Response.Redirect("");
                }
                else if (userType.SelectedValue == "Counselor")
                {
                    Response.Redirect("");
                }
                else
                {
                    cmd.CommandText = "SELECT PersonType FROM Person where Username='" + txtUsername.Text + "' and Password='" + txtPassword.Text + "'";
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    sda.Fill(ds, "Person");

                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        Label1.Text = "Invalid User Type. Please Try Again!";
                    }
                    else
                    {
                        Label1.Text = "Invalid User Type, Username or Password. Please Try Again!";
                    }
                }
            }
        }
        protected void UserType_SelectedIndexChanged(object sender, EventArgs e)
        {
            ImageDef.ImageUrl = "Images/student.png";
            {
                if (userType.SelectedValue == "Student")
                {
                    ImageDef.ImageUrl = "Images/student.png";
                }
                else if (userType.SelectedValue == "Teacher")
                {
                    ImageDef.ImageUrl = "Images/teacher.png";
                }
                else if (userType.SelectedValue == "Counselor")
                {
                    ImageDef.ImageUrl = "Images/counselor.png";
                }
                else if (userType.SelectedValue == "Parent")
                {
                    ImageDef.ImageUrl = "Images/parent.png";
                }
                else if (userType.SelectedValue == "Principal")
                {
                    ImageDef.ImageUrl = "Images/principal.png";
                }
                else if (userType.SelectedValue == "Admin")
                {
                    ImageDef.ImageUrl = "Images/admin.png";
                }
                else
                {
                    ImageDef.ImageUrl = "Images/student.png";
                }
            }
        }
    }
}

有关如何将不同用户类型重定向到不同页面的任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:1)

我认为您为不同的用户创建了不同的布局,并且具有不同的用户视图。因此,为不同的用户添加单独的布局非常容易。 当用户登录到您的系统时,他们将获得不同的视图页面。 您可以直接在视图顶部定义用户的相应布局。

例如,在'学生'的顶部添加以下代码图。

@{
    Layout =  "~/Views/Shared/_Students.cshtml";
}

同样地,对父母的看法'将是:

@{
    Layout =  "~/Views/Shared/_Parents.cshtml";
}

为不同用户的每个视图页面执行此操作。你会得到更好的结果。

答案 1 :(得分:0)

您可以直接在视图中定义布局。

示例:

在UsersController / Index.cshtml文件的顶部(仅适用于此视图)

{
    Layout = "_Layout2"
}

在_ViewStart.cshtml(默认)

{
    Layout = "_Layout"
}

没有必要传递文件的完整路径,项目将自动在共享文件夹中搜索