public ActionResult New(Evaluation model)
        {
            if (model.Questions.Where(q => q.SelectedAnswer == null && q.Required == "Y").Count() > 0)
            {
                throw new Exception("尚有*字號題目未填寫!!");
            }
            if (ModelState.IsValid)
            {
                QuestMain main = new QuestMain();
                main.Docid   = model.Docid;
                main.YYYYmm  = model.YYYYmm;
                main.Rtt     = DateTime.Now;
                main.CustId  = model.CustId;
                main.CustNam = _context.Departments.Find(model.CustId).Name_C;
                main.Qtitle  = _context.QuestionnaireMs.Find(model.Id).Qname;
                _context.QuestMains.Add(main);
                //
                List <QuestAnswer> at = _context.QuestAnswers.Where(a => a.Docid == model.Docid).ToList();
                QuestAnswer        ar;
                foreach (QuestAnswer w in at)
                {
                    if (w != null)
                    {
                        _context.QuestAnswers.Remove(w);
                    }
                }
                foreach (var q in model.Questions)
                {
                    // Save the data
                    ar        = new QuestAnswer();
                    ar.Docid  = model.Docid;
                    ar.VerId  = q.ID;
                    ar.Qid    = q.QID;
                    ar.Answer = q.SelectedAnswer;
                    _context.QuestAnswers.Add(ar);
                }
                try
                {
                    _context.SaveChanges();
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message);
                }

                return(new JsonResult(at)
                {
                    Value = new { success = true, error = "" }
                });
            }
            else
            {
                string msg = "";
                foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                {
                    msg += error.ErrorMessage + Environment.NewLine;
                }
                throw new Exception(msg);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="currentTests"></param>
        /// <param name="currentAnswers"></param>
        /// <param name="currentQuests"></param>
        /// <param name="excelTests"></param>
        private void SetBindings(Dictionary <string, Test> currentTests, Dictionary <string, Answer> currentAnswers, Dictionary <string, Question> currentQuests, IGrouping <string, QuestRow>[] excelTests)
        {
            // сообщения об ошибках
            const string errMessageTest   = "Ошибка сохранения теста \"{0}\"";
            const string errMessageQuest  = "Ошибка сохранения вопроса \"{0}\"";
            const string errMessageAnswer = "Ошибка сохранения ответа \"{0}\"";

            // сохранение привязок
            // список вопрос-ответ
            var questAnswers = new List <QuestAnswer>();
            // список тест-вопрос
            var testQuestions = new List <TestQuestion>();

            // разбор ексель-файла
            foreach (var excelTest in excelTests)
            {
                string testTitle = excelTest.Key;

                Test test;
                if (!currentTests.TryGetValue(testTitle, out test))
                {
                    throw new ApplicationException(string.Format(errMessageTest, testTitle));
                }

                foreach (var questRow in excelTest)
                {
                    Question quest;
                    if (!currentQuests.TryGetValue(questRow.QuestTitle, out quest))
                    {
                        throw new ApplicationException(string.Format(errMessageQuest, questRow.QuestTitle));
                    }

                    foreach (var answerDescription in questRow.Answers)
                    {
                        string answerLiteral = GetLiteral(answerDescription);
                        string answerTitle   = GetTitle(answerDescription);

                        Answer answer;
                        if (!currentAnswers.TryGetValue(answerTitle, out answer))
                        {
                            throw new ApplicationException(string.Format(errMessageAnswer, answerTitle));
                        }
                        var questAnswer = new QuestAnswer
                        {
                            QuestId  = quest.Questid,
                            AnswerId = answer.AnswerId
                        };
                        questAnswers.Add(questAnswer);
                    }

                    // сформировать связь тест-вопрос
                    var testQuestion = new TestQuestion
                    {
                        TestId   = test.TestId,
                        QuestId  = quest.Questid,
                        QuestNum = questRow.QuestNum
                    };
                    testQuestions.Add(testQuestion);
                }
            }
            // сохранить полученные данные в базу
            _testDao.SaveQuestAnswers(questAnswers);
            _testDao.SaveTestQuestions(testQuestions);
        }