Layout ändern, basierend auf der Art der Benutzer-Rolle
Ich bin neu in MVC, schaute ich durch ähnliche Beiträge auf stack, aber Sie did ' NT scheinen zu helfen mein problem. Ich habe zwei Rollen Admin und User. Wenn eine person sich meldet, ich will das layout zu ändern, basierend darauf, ob die person hatte Admin Privilegien oder Benutzer Privilegien.
Meine Admin Layout ist _Layout.cshtml
Meine Benutzer Layout ist _LayoutUser.cshtml
Gibt es etwas in meinem Login-Controller, den ich setzen kann, die das layout ändern auf der Grundlage der Rolle des Benutzers? Die Rolle des Benutzers angegeben ist, in der Login-Tabelle.
id LoginStudentNumber LoginPassword Role
1 123456 123456 Admin
2 234567 234567 Admin
3 345678 345678 User
4 456789 456789 User
Login-Controller:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using RMS.DAL;
using RMS.Models;
namespace RMS.Controllers
{
public class LoginController : Controller
{
RMSContext db = new RMSContext();
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
//
//POST: /Account/Login
[HttpPost]
[AllowAnonymous]
public ActionResult Login(Login model, int? LoginStudentNumber, string LoginPassword)
{
//RMS.Models.Login user = db.Logins.Find(LoginID);
RMS.Models.Login user = db.Logins.FirstOrDefault(l => l.LoginStudentNumber == model.LoginStudentNumber);
if (user == null)
{
ViewBag.InvalidID = "Invalid User Id";
return View(model);
}
if ((user.LoginPassword.Equals(LoginPassword)) && (user.Role.Equals("Admin")))
{
return RedirectToAction("Index", "Home");
}
if ((user.LoginPassword.Equals(LoginPassword)) && (user.Role.Equals("User")))
{
return RedirectToAction("IndexUser", "Home");
}
ViewBag.InvalidPassword = "Invalid Password";
return View(model);
}
}
}
_Layout.cshtml
Seite:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Wits RMS</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body onload=display_ct();>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="@Url.Action("Index", "Home")">
<img src="~/Icons/Wits---Logo---Mono-Neg---Colloquial---Ext.png" style="height:45px; width:80px; margin-right:5px;" alt="" />
</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Researcher", "Index", "Researcher")</li>
<li>@Html.ActionLink("Submission", "Index", "Submission")</li>
<li>@Html.ActionLink("Publication", "Index", "Publication")</li>
<li>@Html.ActionLink("Faculty", "Index", "Faculty")</li>
<li>@Html.ActionLink("School", "Index", "School")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Reports", "Index", "Reports")</li>
<li>@Html.ActionLink("Logout", "Login", "Login")</li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<script type="text/javascript">
function display_c() {
var refresh = 1000; //Refresh rate in milli seconds
mytime = setTimeout('display_ct()', refresh)
}
function display_ct() {
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
var dayOfWeek = ["Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var strcount
var x = new Date()
var x1 = dayOfWeek [x.getDay()] + ", " + x.getDate() + " " + monthNames[x.getMonth()] + " " + x.getFullYear();
x1 = x1 + " " + ('0' + x.getHours()).slice(-2) + ":" + ('0' + x.getMinutes()).slice(-2) + ":" + ('0' + x.getSeconds()).slice(-2);
document.getElementById('ct').innerHTML = x1
tt = display_c();
}
</script>
<p>© @DateTime.Now.Year - Wits RMS <span style="float:right; top:20px;" id='ct'></span></p>
</footer>
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
_LayoutUser.cshtml
Seite:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Wits RMS</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body onload=display_ct();>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="@Url.Action("IndexUser", "Home")">
<img src="~/Icons/Wits---Logo---Mono-Neg---Colloquial---Ext.png" style="height:45px; width:80px; margin-right:5px;" alt="" />
</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Submission", "IndexUser", "Submission")</li>
<li>@Html.ActionLink("Publication", "Index", "Publication")</li>
<li>@Html.ActionLink("Contact", "ContactUser", "Home")</li>
<li>@Html.ActionLink("About", "AboutUser", "Home")</li>
<li>@Html.ActionLink("Logout", "Login", "Login")</li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<script type="text/javascript">
function display_c() {
var refresh = 1000; //Refresh rate in milli seconds
mytime = setTimeout('display_ct()', refresh)
}
function display_ct() {
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
var dayOfWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var strcount
var x = new Date()
var x1 = dayOfWeek[x.getDay()] + ", " + x.getDate() + " " + monthNames[x.getMonth()] + " " + x.getFullYear();
x1 = x1 + " " + ('0' + x.getHours()).slice(-2) + ":" + ('0' + x.getMinutes()).slice(-2) + ":" + ('0' + x.getSeconds()).slice(-2);
document.getElementById('ct').innerHTML = x1
tt = display_c();
}
</script>
<p>© @DateTime.Now.Year - Wits RMS <span style="float:right; top:20px;" id='ct'></span></p>
</footer>
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie nur ändern Sie die
/Views/_ViewStart.cshtml
Datei.Müssen Sie zuerst die Arbeit in global.asax-Datei fügen Sie die folgende Methode
Application_PostAuthenticateRequest
. Dann Holen Sie sich Ihre Rollen aus der Datenbank ab:Schließlich können Sie access-Rolle aus Ihrer layout-Seite: