Я пытаюсь отобразить панель инструментов в верхней части экрана пользователей, если они вошли в систему, где они могут получить доступ к своей учетной записи и т. Д. Если они не вошли в систему, отобразится форма, позволяющая им войти в систему. IЯ не совсем уверен, как это сделать, используя C # и Razor, и продолжать использовать синтаксические ошибки и ошибки компиляции.
Моя текущая форма выглядит следующим образом: у меня есть один файл, _siteLayout.cshtml.Это хранит панель инструментов в верхней части экрана.Он проверяет форму входа по внешней базе данных и, если она аутентифицирована, создает, дает клиенту cookie.Форма, которую я, по сути, хочу:
if(user logged in)
render account management page
else{
render login page
}
Простая, но у меня много проблем.Вот мой код, удаляющий большую часть, пока:
<body>
@using System.Text;
@using System.Net.Sockets;
@{
if(Request.Cookies["mpUsername"] == null){
//if user is not logged in
//some authentication is ran, if passed, isValid is set to true
if (isValid) {
//login is valid, set cookie
HttpCookie cookie = Request.Cookies.Get("mpUsername");
if(cookie == null) {
cookie = new HttpCookie("mpUsername");
cookie.Value = username;
cookie.Expires = DateTime.Now.AddDays(3);
Response.Cookies.Add(cookie);
}
} else {
//login invalid, prompt for pass again
<text>Password incorrect, please try again</text>
}
}
}
}//end of razor, HTML begins
<html>
<body>
@{ //if cookie is set
//if(Request.Cookies["mpUsername"] == null){
}
<h2>ACCOUNT MANAGEMENT</h2>
@{
} else {//user not logged in, cookie not set
}
//login form
</body>
</html>
Каков наилучший способ сделать то, что я хочу сделать?В моем собственном коде форма входа в систему и страницы управления учетными записями, очевидно, намного больше, поэтому это немного запутывает, поэтому я удалил их из приведенного выше кода.