2012-04-25 10 views
0

プロジェクトでMVC3-Viewmodelモデルを使用しています。MVC:同じ[HTTPOST]アクションメソッドで編集して作成します

ユーザーがDDLTextAreaの値を入力し、フォームボタンをクリックすると、ポストアクションのajax url.postが基本的に実行され、ポストアクションメソッドが作成され、保存されます。しかし、私が欲しいのは、チェック、例のいくつかのタイプです:

  • は、ステップ1:答えは存在しない場合は作成します。答えは更新
  • ステップ3を行う存在する場合:SelectQuestionはどんな答え
  • ステップ2を持っている場合新しいものとそれを保存する。

これは私のコントローラは、今どのように見えるかです:

[HttpPost] 
    public JsonResult AnswerForm(int id, SelectedQuestionViewModel model) 
    { 
     bool result = false; 
     var goalCardQuestionAnswer = new GoalCardQuestionAnswer(); // Creates an instance of the entity that I want to fill with data 

     SelectedQuestion SelectedQ = answerNKIRepository.GetSelectedQuestionByID(model.QuestionID); // Retrieve SelectedQuestion from my repository with my QuestionID.    
     goalCardQuestionAnswer.SelectedQuestion = SelectedQ; // Filling my entity with SelectedQ 
     goalCardQuestionAnswer.SelectedQuestion.Id = model.QuestionID; // filling my foreign key with the QuestionID 
     goalCardQuestionAnswer.Comment = model.Comment; // Filling my entity attribute with data 
     goalCardQuestionAnswer.Grade = model.Grade; // Filling my entity attribute with data 
     answerNKIRepository.SaveQuestionAnswer(goalCardQuestionAnswer); // adding my object 
     answerNKIRepository.Save(); // saving 
     result = true; 
     return Json(result); 
    } 

CommentGradeはNULL可能aswellです。

entitysは

[Question](1)------(*)[SelectedQuestion](1)-----(0..1)[GoalCardQuestionAnswer] 

ヘルプの任意の種類が評価されてのように関連しています。

ありがとうございます!

答えて

0

私は私の質問を達成し、答えは以下の通りです:

[HttpPost] 
     public JsonResult AnswerForm(int id, SelectedQuestionViewModel model) 
     { 
      SelectedQuestion SelectedQ = answerNKIRepository.GetSelectedQuestionByID(model.QuestionID); 

      if (SelectedQ.GoalCardQuestionAnswer == null) 
      { 

       var goalCardQuestionAnswer = new GoalCardQuestionAnswer(); 
       goalCardQuestionAnswer.SelectedQuestion = SelectedQ; 
       goalCardQuestionAnswer.SelectedQuestion.Id = model.QuestionID; 
       goalCardQuestionAnswer.Comment = model.Comment; 
       goalCardQuestionAnswer.Grade = model.Grade; 
       this.answerNKIRepository.SaveQuestionAnswer(goalCardQuestionAnswer); 
       this.answerNKIRepository.Save(); 
       const bool Result = true; 
       return this.Json(Result); 
      } 
      else 
      { 
       if (SelectedQ.GoalCardQuestionAnswer != null) 
       { 
        SelectedQ.GoalCardQuestionAnswer.Comment = model.Comment; 
       } 

       if (SelectedQ.GoalCardQuestionAnswer != null) 
       { 
        SelectedQ.GoalCardQuestionAnswer.Grade = model.Grade; 
       } 
       const bool Result = false; 
       return this.Json(Result); 
      } 
     } 
関連する問題