C# 如何基于当前用户登录在视图中显示某些元素

C# 如何基于当前用户登录在视图中显示某些元素,c#,asp.net-mvc,C#,Asp.net Mvc,我有两种类型的用户角色,例如:用户和管理员。 当登录角色为用户时,我想显示Update链接,但当角色为Admin nUpdate和delete时,这两个链接都应该出现在视图模块中 我怎样才能做到这一点?这是我的看法。其中我想根据用户角色设置更新和删除的链接 @model List<WebApplication5.Models.MyModel> @{ Layout = null; } <!DOCTYPE html> <html> <head&

我有两种类型的用户角色,例如:用户和管理员。 当登录角色为用户时,我想显示
Update
链接,但当角色为Admin n
Update
delete
时,这两个链接都应该出现在
视图
模块中

我怎样才能做到这一点?这是我的看法。其中我想根据用户角色设置
更新
删除
的链接

@model List<WebApplication5.Models.MyModel>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Show</title>
</head>
<body style="background-color:aliceblue">

    <div>
       @TempData["Message"]

        <b><center>Data Of Table</center></b>
        <table style="background-color:azure" border="1" align="center" title="DATA OF EMPLOYEE">

                @foreach (var objmymodel in Model)
                { 
                    <tr>
                       <td>@objmymodel.Username</td>
                       <td>@objmymodel.Password</td>  

                       <td>@Html.ActionLink("delete", "Delete", new {id=@objmymodel.Id })</td>
                       <td>@Html.ActionLink("update", "Update", new { id = @objmymodel.Id })</td>


                    </tr>
                }
        </table>
    </div>


    <div>@Html.ActionLink("Logout","Login","Mycontroller")</div>
</body>
</html>
这是控制器的代码

 public ActionResult Login()
        {


            return View();
        }

        [HttpPost]
        public ActionResult Login(MyModel objmymodel)
        {


            ado.Logindata(objmymodel);

            TempData["Message"] = ado.message;

            if (ado.message == "FAIL")
            {
                objmymodel.Username = "";
                objmymodel.Password = "";
                return RedirectToAction("Login");

            }
            else
            {
                TempData["Message"] = ado.usernamestring;

                return RedirectToAction("Show");
            }

        }

在这种情况下,您必须执行以下任务

第一种方法

  • 为应用程序创建角色。

  • 注册时,将角色分配给您的用户

  • 现在,您可以根据角色禁用/启用链接 第二种方法

    创建当前显示视图的两个视图(除这些链接外,其余所有数据保持不变)

    在控制器中,选中用户名,如果用户是管理员,则渲染第一个视图(a),否则渲染第二个视图(b)。

    您可以在模型中拥有一个属性(HasAdminAccess),并使用该属性相应地检查视图和渲染按钮

    型号:

    public class MyModel
    {
       // Your other props.
    
       public bool HasAdminAccess { get; set; }
    }
    
    if (objmymodel.Username == "admin" && objmymodel.Password == "admin") {
    
             usernamestring = "admin";
             message = "welcome    " + objmymodel.Username;
             objmymodel.HasAdminAccess = true;
     }
    
    @if (Model.HasAdminAccess)
    {
        <td>@Html.ActionLink("delete", "Delete", new {id = @objmymodel.Id})</td>
    }
    <td>@Html.ActionLink("update", "Update", new { id = @objmymodel.Id })</td>
    
    控制器/操作:

    public class MyModel
    {
       // Your other props.
    
       public bool HasAdminAccess { get; set; }
    }
    
    if (objmymodel.Username == "admin" && objmymodel.Password == "admin") {
    
             usernamestring = "admin";
             message = "welcome    " + objmymodel.Username;
             objmymodel.HasAdminAccess = true;
     }
    
    @if (Model.HasAdminAccess)
    {
        <td>@Html.ActionLink("delete", "Delete", new {id = @objmymodel.Id})</td>
    }
    <td>@Html.ActionLink("update", "Update", new { id = @objmymodel.Id })</td>
    
    查看:

    public class MyModel
    {
       // Your other props.
    
       public bool HasAdminAccess { get; set; }
    }
    
    if (objmymodel.Username == "admin" && objmymodel.Password == "admin") {
    
             usernamestring = "admin";
             message = "welcome    " + objmymodel.Username;
             objmymodel.HasAdminAccess = true;
     }
    
    @if (Model.HasAdminAccess)
    {
        <td>@Html.ActionLink("delete", "Delete", new {id = @objmymodel.Id})</td>
    }
    <td>@Html.ActionLink("update", "Update", new { id = @objmymodel.Id })</td>
    
    @if(Model.HasAdminAccess)
    {
    @ActionLink(“delete”,“delete”,new{id=@objmymodel.id})
    }
    @ActionLink(“更新”,“更新”,新的{id=@objmymodel.id})
    
    *

    当您第一次请求(GET)HasAdminAccess时,将有false和delete 按钮将不会被渲染


    你如何知道管理员是登录用户还是普通用户?你能分享填充模型并返回视图的控制器代码吗?@lazzy我把ado类和控制器的代码放在我的问题中,请检查。@Chetan Ranpariya我把控制器和ado类的代码放在我的问题中。请检查。@Lucifer谢谢。HasaAdminAccess是数据库的一列吗@vikas Chaturvedii如何构建应用程序和管理角色取决于您。