Частичное представление результата

Могу ли я вернуть вид в PartialViewResult() как следующее?

public PartialViewResult EditAdminProfile_Post(int Id, FormCollection formCollection)
        {
            //if (Session["AdminID"] != null)
            //{
            Admin admin = new Admin();
            admin = db.Admins.Single(m => m.ID == Id);
            admin.Name = formCollection[0];
            admin.Gender = formCollection[1];
            admin.Email = formCollection[2];
            admin.ContactNumber = formCollection[3];
            admin.AboutMe = formCollection[4];
            if (ModelState.IsValid)
            {
                db.Entry(admin).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
            }
            return PartialView("AdminProfile");

AdminProfile это не частичное представление.

2 ответа

Проблема в том, что вы не передаете модель частичному представлению, поэтому при ее вызове вы получаете Null reference

Обновите ваш код этой строкой:

return PartialView("AdminProfile", admin);

PS вместо использования FormCollection лучше использовать связующее по умолчанию для модели и принять Admin модель в вашем методе действия

Да, ты можешь. Это не рекомендуется, так как ваш _layout игнорируется (что означает css или же script файлы, определенные в макете, поэтому ваши стили и функциональность могут вести себя иначе, чем вы ожидаете). Даже если вы можете заставить его работать, вы смотрите на запах кода.

Вы хотите повторно использовать AdminProfile как частичный, так и нормальный вид?

  • Создать частичное представление AdminProfilePartial с многоразовым контентом.
  • В вашем AdminProfile посмотреть, позвонить AdminProfilePartial внутри (даже если это все, что вы используете)

Затем, когда вы возвращаете полный вид:

return View("AdminProfile");

В противном случае частичное представление:

return PartialView("AdminProfilePartial");
Другие вопросы по тегам