Частичное представление результата
Могу ли я вернуть вид в 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");