Модель возвращает ноль, если я ухожу со страницы и возвращаюсь - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь заполнить раскрывающийся список.Вначале все работает так, как я ожидаю.Но когда я ухожу от исходного представления и возвращаюсь, я получаю эту ошибку:

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");
            }
        }
    }

1 Ответ

0 голосов
/ 10 июня 2019

Я думаю это потому, что вы используете using (PayrollEntities2 db = new PayrollEntities2()) вместо того, чтобы просто объявить его.

...