У меня есть страница входа и страница регистрации, все работают нормально. У меня есть таблица пользователей, которую я создал в базе данных sql server со столбцом Имя пользователя, Полное имя, Школа, Курс. Я хочу отобразить все детали пользователя на странице просмотра бокового меню в MVC. Но когда я вхожу в систему, я получаю сообщение об ошибке «объект-ссылка-не-установлен-экземпляр-объекта». У меня также есть действие контроллера. Пожалуйста, помогите.
Это для MVC
@ модель ORMOnlineExamApp.Models.Candidate
<div class="row">
<div class="col-md-3">
<div class="container-fluid">
<div class="thumbnail" style="width:200px">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Candidate's Details</h3>
</div>
</div>
<p>
<h4 style="font-weight:bold">Application No:</h4>
</p>
<p>
@Model.Username
</p>
<hr />
<p>
<h4 style="font-weight:bold">Name:</h4>
</p>
<p>
@Model.FullName
</p>
<hr />
<p>
<h4 style="font-weight:bold">School:</h4>
</p>
<p>
@Model.School
</p>
<hr />
<p>
<h4 style="font-weight:bold">Course:</h4>
</p>
<p>
@Model.Course
</p>
</div>
//Controller
public ActionResult Contact(string id)
{
using (ORMOnlineExamEntitiesApp db = new ORMOnlineExamEntitiesApp())
{
var user = db.Candidates.SingleOrDefault(u => u.Username == id);
return View(user);
}
}
Please find the login page below:
//Login POST
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(CandidateLogin login, string ReturnUrl = "")
{
string message = "";
using (ORMOnlineExamEntitiesApp dc = new ORMOnlineExamEntitiesApp())
{
var v = dc.Candidates.Where(a => a.Username == login.Username).FirstOrDefault();
if (v != null)
{
if (string.Compare(Crypto.Hash(login.Password), v.Password) == 0)
{
int timeout = login.RememberMe ? 525600 : 20; // 525600 min = 1 year
var ticket = new FormsAuthenticationTicket(login.Username, login.RememberMe, timeout);
string encrypted = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
cookie.Expires = DateTime.Now.AddMinutes(timeout);
cookie.HttpOnly = true;
Response.Cookies.Add(cookie);
if (Url.IsLocalUrl(ReturnUrl))
{
return Redirect(ReturnUrl);
}
else
{
FormsAuthentication.SetAuthCookie(login.Username, true);
Session["UserId"] = login.Username.ToString();
return RedirectToAction("Contact", "Home");
}
}
else
{
message = "Invalid credential provided";
}
}
else
{
message = "Invalid credential provided";
}
}
ViewBag.Message = message;
return View();
}