如何根据当前用户登录在View中显示一些元素

时间:2018-05-17 10:53:45

标签: c# asp.net-mvc

我有两种类型的用户角色,例如:User&管理员。 我想在登录角色为用户时显示who链接,但当角色为管理员Updateupdate时,这两个链接都应显示在delete模块中。

我怎样才能做到这一点?这是我的观点。我希望根据用户角色为viewupdate添加链接。

delete

这里是ADO类的代码,如果我输入admin作为用户名和密码而不是重定向显示数据页面为admin或签入数据库的用户名

@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>

这是Controller的代码

        public static void Logindata(MyModel objmymodel)
        {
            SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\nisarg parekh\documents\visual studio 2013\Projects\WebApplication5\WebApplication5\App_Data\Database1.mdf;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");
            con.Open();

            if(objmymodel.Username=="admin" && objmymodel.Password=="admin")
            {

                usernamestring = "admin";
                message = "welcome    " + objmymodel.Username;

            }
            else
            {
            string check = "select Username,Password from tb1 where Username='"+objmymodel.Username+"' and Password='"+objmymodel.Password+"'";
            SqlCommand cmd = new SqlCommand(check,con);
            SqlDataReader dr = cmd.ExecuteReader();



            if (dr.Read())
            {

                usernamestring = objmymodel.Username;
                message ="welcome    "+ objmymodel.Username;
            }
            else
            {
                message = "FAIL";
            }
            }

2 个答案:

答案 0 :(得分:0)

在这种情况下,您必须遵循以下任务。

- 第一种方法

  1. 为您的应用创建角色。 Creating Roles in Asp.net Identity MVC 5

  2. 注册时为用户分配角色。 How to assign a Role to a user in MVC5?

  3. 现在基于角色,您可以禁用/启用链接。 Hide link based on Role
  4. - 第二种方法

    创建当前节目视图的两个视图(除了这些链接之外的所有剩余数据保持不变)

     a. With Update and Delete Link
     b. only With Update Link
    

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

答案 1 :(得分:0)

您可以在Model中拥有一个属性(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>

*

  

当您第一次请求(GET)HasAdminAccess时,会有false并删除   按钮不会被渲染。