Я использую шаблон хранилища. Когда я вхожу в систему, я получаю сообщение об ошибке:
"Ссылка на объект не установлена для экземпляра объекта."
Все идеально, но я не знаю почемуэта ошибка показывает Может кто-нибудь сказать мне, где я не прав. LoginViewModel и модель пользователя одинаковы, и я использую базу данных в первую очередь.
Страница входа в систему
public ActionResult Login(LoginViewModel loginModel )
{
try
{
if (!string.IsNullOrEmpty(loginModel.Username) && !string.IsNullOrEmpty(loginModel.Password))
{
var Username = loginModel.Username;
var Password = loginModel.Password;
var result = _IUserRepository.ValidUser(Username, Password);
if (result.id==0 || result.id < 0)
{
ViewBag.errormessage = "Enter Invalid Username and Password";
}
else
{
return RedirectToAction("Index");
}
}
}
catch (Exception)
{
throw;
}
return View();
}
UserRepository
public class UserRepository : IUserRepository
{
private dbContext _context;
public UserRepository(dbContext context)
{
this._context = context;
}
public bool UpdatePassword(user user)
{
throw new NotImplementedException();
}
public user ValidUser(string username, string passWord)
{
try
{
var validate = (from user in _context.users
where user.Username == username && user.Password == passWord
select user).SingleOrDefault();
return validate;
}
catch (Exception ex)
{
throw ex;
}
}
}
IUserRepository
public interface IUserRepository
{
user ValidUser(string username, string password);
bool UpdatePassword(user user);
}
LoginViewModel
public class LoginViewModel
{
public int id { get; set; }
[Required(ErrorMessage ="Username is Required")]
public string Username { get; set; }
[Required(ErrorMessage = "Password is Required")]
public string Password { get; set; }
}
Login.chtml
@model RepositoryPattren.Models.LoginViewModel
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>LoginViewModel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Username, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Username, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Username, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Password, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>