Я пытаюсь заполнить раскрывающийся список.Вначале все работает так, как я ожидаю.Но когда я ухожу от исходного представления и возвращаюсь, я получаю эту ошибку:
System.NullReferenceException: 'Ссылка на объект не установлена для экземпляра объекта.'System.Web.Mvc.WebViewPage.Model.get вернул null.
Я попытался добавить оператор if для учета нулевой модели, но это не сработало.(Я взял это сейчас)
Спасибо заранее.
Модель:
public class IndexDates
{
public List<PeriodEndDates> ListForDropDown { get; set; }
}
Контроллер:
public ActionResult Index(IndexDates datesParam)
{
using (PayrollEntities2 db = new PayrollEntities2())
{
DateTime todaysDate = DateTime.Now;
var model = new IndexDates()
{
ListForDropDown = db.PeriodEndDates2
.Where(x => x.periodEndDate <= todaysDate)
.OrderByDescending(x => x.periodEndDate )
.ToList()
};
return View(model);
}
}
Вид:
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<div class="schedule-bottom">
<p>Period End Date: @Html.DropDownListFor(model => model.ListForDropDown, new SelectList(Model.ListForDropDown, "periodEndDate", "periodEndDate"), "Select...", new { onChange = "selectedtext(this)" })</p>
</div>
}
PayrollEntities2:
public partial class PayrollEntities2 : DbContext
{
public PayrollEntities2()
: base("name=PayrollEntities2")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<PeriodEndDates2> PeriodEndDates2 { get; set; }
}
Перенаправление домашнего контроллера:
[HttpPost]
public ActionResult Authorize(UsersAndDates userModel)
{
using (MasterTable db = new MasterTable())
{
var userDetails = db.PaybillUsers.Where(x => x.userName == userModel.userName && x.password == userModel.password).FirstOrDefault();
var datesToDisplay = db.PeriodEndDates2
.Where(x => x.ffsPayDate > DateTime.Now)
.Select(x => new PayDates
{
PayDate = x.ffsPayDate,
PeriodEndDate = x.periodEndDate
})
.FirstOrDefault();
if (userDetails == null)
{
return View("Login", userModel);
}
else
{
Session["userID"] = userDetails.userName.ToString();
Session["payDate"] = datesToDisplay.PayDate.ToString();
Session["endDate"] = datesToDisplay.PeriodEndDate.ToString();
return RedirectToAction("Index", "Dashboard");
}
}
}