根据“viewstart文件”中的sql查询选择布局文件

y3bcpkx1  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(138)

我是编程新手,如果我把这个解释错了,请容忍我。
我有一个asp.net核心web应用程序,它使用实体框架,允许用户访问sql数据库并执行crud操作。其中一个表是“users”,该表中的一个字段是“permissions”。另一个字段是用户的windows用户名。最终我想有一个不同的布局文件用于不同的权限级别。我知道有更好的方法可以做到这一点(身份验证/授权),但现在我只是尝试为不同的用户有不同的布局。
我在\u viewstart文件中尝试了以下代码,但出现错误“当前上下文中不存在数据库”。有没有办法从viewstart文件中的sql表中提取值?
或者,有没有一个不太复杂的更好的方法呢?
我还使用windows标识获取当前用户,并将其与数据库中的表进行比较。

var db = Database.Open("My Connection String");
var selectQueryString = "Select Permissions FROM Users WHERE UserName = User.Identity.Name";

int currentuser = db.Query(selectQueryString);

if (currentuser == 1) Layout = "_Layout";
else Layout = "_Layout2";
arknldoa

arknldoa1#

为不同的用户提供不同的布局”

更新

在razor页面项目中,要根据用户信息动态更改布局,可以通过创建 BindProperty 键入字段并动态绑定页面中的布局。
索引.cshtml.cs:

[BindProperty]
    public string Layout { get; set; }

    public void OnGet()
    { 
        var db = Database.Open("My Connection String");
        var selectQueryString = "Select Permissions FROM Users WHERE UserName = User.Identity.Name";

        int currentuser = db.Query(selectQueryString);
        if (currentuser == 1) Layout = "_Layout";
        else Layout = "_Layout2";

    }

索引.cshtml:

@page
@model WebApplication_razorpage_new.Pages.IndexModel
@{
    ViewData["Title"] = "Index";
    Layout = "~/Pages/Shared/" + Model.Layout + ".cshtml";
}

<h1>Index</h1>

相关问题