Вручную из RouteData
извлекать не обязательно, достаточно прописать эти параметры в аргументах метода:
[HttpGet]
public ActionResult addLine(int id, int pid)
{
OrgForm newline = new OrgForm();
TempData["curPer"] = pid; // для ссылки "Назад" в текущий период
TempData["curFrm"] = id; // для ссылки "Отмена"
return PartialView("partAddInOrgForm", newline);
}
[HttpPost]
public ActionResult addLine(OrgForm lineAdd, int id, int pid)
{
int cfrm = id;
Form frm = db.Forms.Where(f => f.formID == cfrm).First();
lineAdd.Form = frm;
int cper = pid;
Period per = db.Periods.Where(p => p.perID == cper).First();
lineAdd.FPeriorm d= fperm;
db.AddToOrgForms(lineAdd);
db.SaveChanges();
List<OrgForm> orgFrm = (from of in db.OrgForms where of.perID == cper && of.formID == cfrm orderby of.lineCod select of).ToList();
return PartialView("partOrgForms", orgFrm);
}
Еще нужно убедиться, что параметр pid передаётся в POST-параметрах, т.к. если при извлечении pid вылетает подобная ошибка, то вероятно это значение вообще не было передано на сервер.